排序
2015-07-13 00:42
232 查看
Problem Description
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。
你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。
Input
输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。
输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
Output
对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。
Sample Input
0051231232050775
Sample Output
0 77 12312320
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。
你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。
Input
输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。
输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
Output
对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。
Sample Input
0051231232050775
Sample Output
0 77 12312320
#include<stdio.h> #include<string.h> #include<math.h> #define Max 1000 int main() { char a[Max]={0}; int b[Max]={0}; int i,j=0,k,len,temp; while(gets(a)){ for(i=0;i<=j;i++) b[i]=0; len=strlen(a); j=0; while(a[len-1]=='5') len--; for(i=len-1,k=0;i>=0;i--){ if(a[i]=='5'){ j++; k=0; i--; } while(a[i]=='5'){ i--; } if(i<0) break; b[j]+=pow(10,k++)*(a[i]-'0'); } if(b[j]==0&&a[0]=='5') j--; for(i=0;i<=j;i++){ for(k=i+1;k<=j;k++){ if(b[i]>b[k]){ temp=b[i]; b[i]=b[k]; b[k]=temp; } } } for(i=0;i<=j;i++){ printf("%d ",b[i]); } putchar('\n'); } return 0; }<span style="white-space:pre"> </span>
相关文章推荐
- PgSQL · 追根究底 · WAL日志空间的意外增长
- iOS设计模式-工厂方法
- linux块设备驱动之实例
- monkeyrunner截图限时免费阅读#1
- 工厂设计模式
- 画布
- 13.代理模式(Proxy Pattern)
- Remove Specified Characters
- 报时助手
- 使用HttpSessionListener接口监听Session的创建和失效
- 快速排序
- 微生物增殖
- 《Learn More,Study Less》读书笔记之自我反思
- 利用HTML5实现图片的拖拽
- sql server中字符串无法替换空格的问题
- 大型项目开发:谨慎使用智能指针
- 带分数
- OVF协议:虚拟机的MP3格式
- Yahoo军规
- Skype for Business Server 2015-13-IISARR-2-发布-2-前端服务器