Problem Description
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。
你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。
Input
输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。
输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
Output
对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。
Sample Input
0051231232050775
Sample Output
0 77 12312320
1 #include <iostream> 2 #include <algorithm> 3 #include <stdio.h> 4 #include <math.h> 5 #include <string.h> 6 #include <time.h> 7 using namespace std; 8 9 int fanhui(char a[],int k) 10 { 11 int i,data,sum,j; 12 sum=0; 13 j=0; 14 for(i=k-1;i>=0;i--) 15 { 16 data=a[i]-‘0‘; 17 sum=sum+pow(10,j)*data; 18 j++; 19 } 20 return sum; 21 } 22 23 int main() 24 { 25 char ch[1005],a[1005]; 26 int data[1005]; 27 int len,i,j,k,l,t; 28 while(~scanf("%s",ch)) 29 { 30 len=strlen(ch); 31 t=0; 32 for(i=0;i<len;i++) 33 { 34 if(ch[i]!=‘5‘) 35 { 36 k=0; 37 for(j=i;ch[j]!=‘5‘&&j<len;j++) 38 { 39 a[k]=ch[j]; 40 k++; 41 } 42 data[t]=fanhui(a,k); 43 t++; 44 i=j; 45 } 46 } 47 sort(data,data+t); 48 for(i=0;i<t-1;i++) 49 cout<<data[i]<<" "; 50 cout<<data[t-1]<<endl; 51 } 52 return 0; 53 }
把题目分成一个又一个小问题然后一个有一个的去解决,不断验证直到完成。
时间: 2024-10-06 22:25:00