杭电acm之1106-排序
2014-04-06 23:42
309 查看
Problem Description
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。
你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。
[align=left]Input[/align]
输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。
输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
[align=left]Output[/align]
对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。
[align=left]Sample Input[/align]
[align=left]Sample Output[/align]
利用string将字符转化为整数,再用一个最简单的选择排序即可:
代码如下:
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。
你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。
[align=left]Input[/align]
输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。
输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
[align=left]Output[/align]
对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。
[align=left]Sample Input[/align]
0051231232050775
[align=left]Sample Output[/align]
0 77 12312320
利用string将字符转化为整数,再用一个最简单的选择排序即可:
代码如下:
#include<iostream> #include<string> using namespace std; const int SIZE=500; void Memset(int a[], int n, int x);//将数组a 中的元素全部赋值为x void Sort(int a[],int n);//对有效长度为n的数组a[]进行排序,由小到大 void ToInteger(string str, int a[], char ch);//以x为分界符将字符串转化为数字数组 int main(){ int a[SIZE]; string str; while(cin>>str){ Memset(a,SIZE,0); ToInteger(str,a,'5'); Sort(a,a[0]); for(int i=1; i<a[0]; ++i) cout<<a[i]<<" "; cout<<a[a[0]]<<endl; } return 0; } void Memset(int a[], int n, int x){ for(int i=0;i<n;++i) a[i]=x; } void Sort(int a[],int n){ for(int i=1;i<n;++i){ int temp=i; for(int j=i+1;j<=n;++j) if(a[j]<a[temp]) temp=j; if(temp!=i){ a[temp]=a[temp]^a[i]; a[i]=a[i]^a[temp]; a[temp]=a[temp]^a[i]; } } } void ToInteger(string str, int a[], char ch){ bool flag=true;//表示当前还未遇到ch,即分隔符 int sum; for(int i=0;i<str.size();++i){ if(flag){//i前面是ch if(str[i]!=ch){ sum=(int)(str[i]-'0'); flag=false; } } else{ if(str[i]!=ch) sum=sum*10+(int)(str[i]-'0'); else{ flag=true; a[++a[0]]=sum; } } } if(!flag) a[++a[0]]=sum; }
相关文章推荐
- 杭电 ACM 1106 排序 可以用strtok 来做
- 杭电ACM—1106 排序
- 杭电ACM 1106 排序 JAVA代码
- 杭电 acm 1106 排序
- 杭电OJ题 1106 排序 解题报告
- 杭电oj-1106-排序
- 杭电1106 排序
- HDU ACM 1106 排序
- 杭电ACM 2020 绝对值排序
- 杭电ACM大赛2000关于ASCII码排序的问题
- hdu 杭电 排序 1106
- 杭电ACM 2020:绝对值排序
- 杭电1106 排序
- 杭电1106 排序
- 杭电 HDU 1106 排序
- 杭电 acm 2020 绝对值排序
- ACM杭电2020绝对值排序
- 杭电ACM 2020绝对值排序----20140728
- 杭电1106 排序
- 杭电ACM----2020 绝对值排序