输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。
你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。
你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。
Input输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。
输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
Output对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。
Sample Input
0051231232050775
Sample Output
0 77 12312320
用的栈的方法
1 #include <iostream> 2 using namespace std; 3 #include<string.h> 4 #include<set> 5 #include<stdio.h> 6 #include<math.h> 7 #include<queue> 8 #include<map> 9 #include<algorithm> 10 #include <deque> 11 #include <iterator> 12 #include<stack> 13 stack<int>TM; 14 int main() 15 { 16 char a[1010]; 17 long long b[1010]; 18 while(cin>>a) 19 { 20 memset(b,-1,sizeof(b)); 21 int lena=strlen(a); 22 for(int i=0;i<lena;i++) 23 TM.push(a[i]-'0'); 24 int t=1; 25 int add=0; 26 long long sum=0; 27 while(!TM.empty()) 28 { 29 if(TM.top()==5) 30 { 31 t=1; 32 add++; 33 sum=0; 34 TM.pop(); 35 } 36 else 37 { 38 sum+=TM.top()*t; 39 b[add]=sum; 40 t*=10; 41 TM.pop(); 42 } 43 } 44 int flag=1; 45 sort(b,b+add+1); 46 for(int j=0;j<=add;j++) 47 { 48 if(b[j]==-1) 49 continue; 50 if(flag) 51 { 52 cout<<b[j]; 53 flag=0; 54 continue; 55 } 56 cout<<' '<<b[j]; 57 } 58 cout<<endl; 59 60 } 61 return 0; 62 }