1106 排序(类似求和求到手软)

Problem Description
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。

你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。

 
Input
输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。  

输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
 
Output
对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。
 
Sample Input
0051231232050775
 
Sample Output
0 77 12312320
 
Source
 

1.多个5连在一起

2.第一个字符为5

3.最后一个字符为5

 1 #include <stdio.h>
 2 #include <math.h>
 3 #include <queue>
 4 #include <vector>
 5 #include <stack>
 6 #include <map>
 7 #include <string>
 8 #include <string.h>
 9 #include <algorithm>
10 #include <iostream>
11 using namespace std;
12 char a[1010];
13 int s[1010];
14 int main(){
15     int  n,i,l,value;
16     while(gets(a)){
17         l=0;
18         value=0;
19         n=strlen(a);
20         for(i=0;i<n;i++){
21             if(a[i]=='5')
22                 continue;
23             else
24             {  
25                 while(a[i]!='5')  
26                 {  
27                     if(i==n)  
28                         break;  
29                     value=value*10+(a[i]-'0');  
30                     i++;  
31                 }  
32                 s[l] = value;  
33                 value=0;  
34                 l++;  
35             }     
36         }  
37         sort(s,s+l);  
38         for(i=0;i<l-1;i++)  
39             printf("%d ",s[i]);  
40         printf("%d
",s[l-1]); 
41     }
42     return 0;
43 }
原文地址:https://www.cnblogs.com/wangmengmeng/p/4715165.html