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; }