hdu1106( 排序)
来源:互联网 发布:联想手机截图软件 编辑:程序博客网 时间:2024/05/22 00:23
排序
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25827 Accepted Submission(s): 7030
Problem Description
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。
你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。
你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。
Input
输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。
输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
Output
对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。
Sample Input
0051231232050775
Sample Output
0 77 12312320
Source
POJ
此题很练习编码能力,好多细节要处理。。
此题很练习编码能力,好多细节要处理。。
//81108522013-04-17 23:41:57Accepted11060MS320K2047 BC++Achiberx#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>using namespace std;const int maxn = 1010;char str[maxn];int b[maxn];int c[maxn];int index = 0;int cmp_int(const void *a, const void *b) { return *(int *)a - *(int *)b;}int div1(int from, int to) { int d = 1; int sum = 0; for(int i = from; i <=to; i++) { sum += d*b[i]; d = d*10; } return sum;}void work() { int k = 0; int from = 0; int to = index-1; for(int i = 0; i <=index-1; i++ ) { if(b[i]==5 || i==index-1) { if(b[i]==5) { if(i!=0) { int tmp = div1(from, i-1); c[k++] = tmp; from = i+1; } from = i+1; continue; } else { int tmp = div1(from, i); c[k++] = tmp; } } } qsort(c, k, sizeof(c[0]), cmp_int ); if(k >= 2) { for(int j = 0; j <= k-2; j++) { cout << c[j] << ' '; } cout << c[k-1]; cout << endl; } else { cout << c[0] << endl; }}void init() { while(scanf("%s", str)!= EOF) { int len = strlen(str); bool first = true;///代表是第一个出现的5。 index = 0; for(int i = len-1; i >= 0; i--) { if(str[i]!='5'){ first = true; b[index++] = str[i]-'0'; continue; } if(str[i]=='5'&&first&&i!=len-1) {///连续的5仅仅存一个,最前,最后都没5. first = false; b[index++] = str[i]-'0'; continue; } if((str[i]=='5'&&i==len-1)||(!first&&i!=len-1)) { continue; } } ///finish change; work(); }}int main(){ init();///先处理一下,去掉重复的5; return 0;}/****************测试数据:550775599 4050070567 //前导零。445666550051231232050775********************/
- HDU1106:排序
- hdu1106 排序
- hdu1106( 排序)
- HDU1106--排序
- hdu1106排序
- hdu1106排序
- hdu1106排序
- hdu1106-排序
- HDU1106 排序
- hdu1106排序
- HDU1106 排序
- HDU1106 排序
- HDU1106排序
- HDU1106 排序
- HDU1106-排序
- HDU1106 排序
- HDU1106 排序
- Hdu1106排序
- 两线段相交的判断(跨立实验法)
- Fragment 生命周期
- 触发器
- 集合框架
- Ubuntu下使用Java调用IKAnalyzer中文分词程序失效的解决方法
- hdu1106( 排序)
- 对摩尔定律的理解。摩尔定律当前还是继续有效吗?
- Haproxy+KeepAlived 负载均衡
- Python生成了不依赖dll的exe
- 自定义Toast
- ubuntu下安装L2TP/IPSec服务器
- C# Attribute特性 (一)
- hdu 1212
- 吴魏的日记 一个男人最真实的坚定