排序
2015-07-22 10:18
507 查看
排序
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 41663 Accepted Submission(s): 11937
[align=left]Problem Description[/align]
输入一行数字,如果我们把这行数字中的‘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 12312320C语言程序代码/*
解题思路::
先定义一个字符数组,存放一串字符,然后判断字符是否是‘5’,若不是
则把这一串字符转换成数字存放到新定义的一个int型数组a[k]中,k用来记录
连续数字的个数,当连续数字遇到‘5’k后加1,最后将数组从小到大排序
最后输出,要注意输出格式。
*/
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main(){
int n,m,i,j,k,l,a[1001];
char s[1001];
while(gets(s))
{
k=0;
memset(a,0,sizeof(a));
l=strlen(s);
for(i=0;i<l;i++)
{
if(s[i]!='5')//跳过空格(‘5’),i的值加1
{
break;
}
}
for(;i<l;i++)//i的初值是变化的
{
if(s[i]!='5')//当满足S[i]!='5'的条件时,执行下面循环
{
for(;i<l&&s[i]!='5';i++)
{
a[k]=a[k]*10+s[i]-'0';//把空格(‘5’)后面的字符转变成数字。并把它存放到数组a[k]中。
}
k++;//每出现一个连续的数字,K的值加一。
}
}
sort(a,a+k);//将存放连续数字的数组a[]中的数字从小到大排序
for(j=0;j<k-1;j++)//注意::输出格式,输出最后一个数字后面没有空格。
printf("%d ",a[j]);
printf("%d\n",a[k-1]);
}
return 0;
}
相关文章推荐
- JAVA基础之数组
- spring mongodb修改器—$set、$unset、$inc
- 【从零开始学NGUI 】 (一)安装NGUI插件
- Resin介绍及其使用配置
- AngularJS2.0 教程系列(一)
- SDWebImage内存缓存 磁盘缓存
- 【CODEFORCES】 C. Captain Marmot
- char*,const char*和string的相互转换
- 素数筛选法
- POJ 2488 A Knight's Journey
- linux c 经常混淆的概念
- win7 解锁注册表
- keepalived导致lvs vip无法解绑
- HDU 5289 Assignment(2015 多校第一场二分 + RMQ)
- Codeforces 558C Amr and Chemistry 暴力 - -
- 安卓android属性中的px,sp,dip有什么区别?
- 关于导航栏设置的一些操作
- HDOJ 1241 Oil Deposits(8方位简单dfs)
- poj 2420 A Star not a Tree? -- 模拟退火
- poj解题报告——1042