HDOJ1106 排序(字符串数字提取)
来源:互联网 发布:网络直播内容策划表格 编辑:程序博客网 时间:2024/06/06 09:53
排序
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 61761 Accepted Submission(s): 18336
Problem Description
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。
你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。
Input
输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。
输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
Output
对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。
Sample Input
0051231232050775
Sample Output
0 77 12312320
Source
POJ
【分析】遍历字符串,从串中提取数字+数字排序
#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>using namespace std;char num[1010]; //输入字符串int ret[1010]; //保存提取的数字int mypow(int a,int x) //求a的x次方(自己实现){ int i,sum=1; for(i=1;i<=x;i++) sum*=a; return sum;}int main(){ int i,j,len; int ans; int sind,eind; //sind与ind随时记录提取的数字在字符串中的起点与终点 while(scanf("%s",num)!=EOF) { i=ans=0; len=strlen(num); memset(ret,0,sizeof(ret)); for(j=0;j<len;j++) //预处理:5->空格 { if(num[j]=='5') num[j]=' '; } while(i<len) //提取数字过程 { if(num[i]>='0' && num[i]<='9') { sind=i; while(num[i]>='0' && num[i]<='9') i++; eind=i; for(j=sind;j<eind;j++) ret[ans]+=((num[j]-'0')*mypow(10,eind-j-1)); ans++; } else i++; } sort(ret,ret+ans); //对存入结果的数组排序 for(j=0;j<ans-1;j++) printf("%d ",ret[j]); printf("%d\n",ret[ans-1]); } return 0;}
阅读全文
0 0
- HDOJ1106 排序(字符串数字提取)
- hdoj1106排序(sort)
- hdoj1106排序
- hdoj1106 排序
- hdoj1106 排序
- hdoj1106 排序*
- hdoj1106排序
- hdoj1106 排序
- HDOJ1106-排序
- hdoj1106 排序(简单的对字符串的处理)
- 将n个字符串中的数字提取并排序
- 提取字符串中的数字
- 提取字符串中的数字
- matlab 字符串提取数字
- 字符串提取数字
- 字符串中提取数字
- 字符串提取数字
- 字符串中提取数字
- HDU 2222 Keywords Search【AC自动机】
- CodeForces
- HDU 6070 Dirt Ratio(二分+线段树)
- 飞扬23期总结
- [java]冒泡排序的常规、改进以及递归实现
- HDOJ1106 排序(字符串数字提取)
- IOS UIScrollView实现自动轮播图功能
- 浅析Linux命令之grep
- Hadoop 及 Hive 压缩应用
- 动脑学院笔记
- jQuery基础
- 归并排序--JAVA代码实现
- SWOT分析和PEST分析
- 理解c#中的闭包