HDU 1106 排序

刚开始是用比较字符串的方法,但是老是WA,看了别人的思路,就改成现在的代码了。。。

#include<stdio.h>

#include<string.h>
#include<stdlib.h>
char s[10005];
long long i,l,count;
long long num[10005];

int cmp(const void *a,const void *b)
{
    return *(int *)a - *(int *)b;
}

int main()
{
    while(scanf("%s",s)!=EOF)
    {
        l=strlen(s);
        memset(num,0,sizeof(num));
        for(i=0,count=0;i<l;i++){
               if(s[i]=='5' && i!=0 && s[i-1]!='5'){
                count++;        
            }
            else if(s[i]!='5'){
                num[count]=num[count]*10+s[i]-'0';
            }
        }
        if(s[l-1]=='5') count--;
        count++;
        qsort(num,count,sizeof(num[0]),cmp);
        printf("%I64d",num[0]);
        for(i=1;i<count;i++)
            printf("% I64d",num[i]);
        printf("\n");
    }
    system("pause");
    return 0;    
}


你可能感兴趣的:(HDU 1106 排序)