uva10905 - Children's Game

题意不难,思路不难,就是有些特殊情况想不到。

如下

input:

2

90 9

2

89 8

output:

990

898

另外需要注意的地方就是题目中说输入整数,但又没说这个整数的范围,开始的时候我为所谓每个整数开了50位,但是还是越界,后来开了100,才AC掉。这就是所谓的整数啊,如果你把这些整数放到int或者long long里纯属无稽之谈。。。

代码如下:

#include <cstdio>
#include <cstring>
#include <cstdlib>
char st[55][100];
int comp(const void *a, const void *b)
{
    char *c = (char*)a, *d = (char*)b;
    int i, len_c = strlen(c), len_d = strlen(d);
    for(i = 0; i < len_c&&i < len_d; i++)
        if(d[i]-c[i]!=0) return d[i]-c[i];
    if(i<len_c||i<len_d)
    {
        char te1[200], te2[200];
        strcpy(te1,c), strcat(te1,d);
        strcpy(te2,d), strcat(te2,c);
        return strcmp(te1,te2)<0;
    }
    return 0;
}
int main ()
{
    int n;
    while(scanf("%d",&n),n)
    {
        getchar();
        for(int i = 0; i < n; i++) {scanf("%s",st[i]); getchar();}
        qsort(st,n,sizeof(st[0]),comp);
        for(int i = 0; i < n; i++) printf("%s",st[i]);
        printf("\n");
    }
    return 0;
}



你可能感兴趣的:(uva10905 - Children's Game)