您的位置:首页 > 其它

HDU 1106 排序

2012-08-11 11:39 253 查看
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1106

解题思路:这道题就是一个字符串处理啦,这道题我们要考虑几种情况
1.多个5连在一起
2.第一个字符为5
3.最后一个字符为5

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int cmp(const void*a,const void*b)
{
return *(int *)a-*(int *)b;  //升序
}
int main()
{
int i,flag,k,len;
char str1[1001];
int  str2[1001];
while(scanf("%s",&str1)!=EOF)
{
len=strlen(str1);
k=0;
flag=0;
for(i=0;i<len;i++)
{
if(str1[i]=='5')
continue;  //把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数
else
while(str1[i]!='5')
{
if(i==len)
break;
k=k*10+(str1[i]-'0'); //将一个字符串转化为一个数存放到整形数组里
i++;  //是将隔开的字符串转化为数
}
str2[flag++]=k;  //存放在整形数组ste2中
k=0;  //每次都要清0
}
qsort(str2,flag,sizeof(str2[0]),cmp);
for(i=0;i<flag-1;i++)
printf("%d ",str2[i]);
printf("%d\n",str2[flag-1]);
}
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: