HDU 1106 排序

地址:http://acm.hdu.edu.cn/showproblem.php?pid=1106

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

 1 #include<stdio.h>

 2 #include<string.h>

 3 #include<stdlib.h>

 4 int cmp(const void*a,const void*b)

 5 {

 6     return *(int *)a-*(int *)b;  //升序

 7 }

 8 int main()

 9 {

10     int i,flag,k,len;

11     char str1[1001];

12     int  str2[1001];

13     while(scanf("%s",&str1)!=EOF)

14     {

15         len=strlen(str1);

16         k=0;

17         flag=0;

18         for(i=0;i<len;i++)

19         {

20             if(str1[i]=='5')

21             continue;  //把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数 

22             else

23             while(str1[i]!='5')

24             {

25                 if(i==len)

26                 break;

27                 k=k*10+(str1[i]-'0'); //将一个字符串转化为一个数存放到整形数组里 

28                 i++;  //是将隔开的字符串转化为数 

29             }

30             str2[flag++]=k;  //存放在整形数组ste2中 

31             k=0;  //每次都要清0 

32         }

33         qsort(str2,flag,sizeof(str2[0]),cmp);

34         for(i=0;i<flag-1;i++)

35            printf("%d ",str2[i]);

36            printf("%d\n",str2[flag-1]);

37     }

38     system("pause");

39     return 0;

40 }

你可能感兴趣的:(HDU)