hdu1106排序

水题,出错只在于考虑问题的不全面,

给几组帮助我ac的测试数据

输入
0051231232050775
005123123205077
50051231232050775
55512345(别漏了)  《《这个就是我出错的数据
输出
0 77 12312320
0 77 12312320
0 77 12312320
1234
下面上代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define maxn 1050
char line[maxn]; char chess[maxn][maxn]; __int64 fin[maxn]; int cmp(const void*a,const void*b) { return *(int * )a-*(int *)b; } int main() { while(scanf("%s",line)!=EOF) {
        //memset(line,'\0',sizeof(line));
        memset(chess,'\0',sizeof(chess));
        memset(fin,0,sizeof(fin)); int len=strlen(line); int k=0; int l=0; int len2=0; int sign=0; for(int i=0;i<len;i++) { if(line[i]!='5') {    chess[k][l++]=line[i];
                sign=1; } if(line[i]=='5'&&line[i+1]!='5'&&sign)//之前没考虑开头为5的情况,所以加上sign这个标记变量 {
                k++;
                l=0; } } if(line[len-1]=='5')
            len2=k-1;//考虑结尾是否为5来判定数据的组数 else
            len2=k; for(int i=0;i<=len2;i++) {
            fin[i]=atoi(chess[i]); }
        qsort(fin,len2+1,sizeof(fin[0]),cmp);//快速排序
        printf("%I64d",fin[0]); for(int i=1;i<=len2;i++) {
            
            printf(" %I64d",fin[i]); }
        printf("\n"); } return 0; }


你可能感兴趣的:(水题)