九度题目1190:大整数排序

题目描述:

对N个长度最长可达到1000的数进行排序。

输入:

输入第一行为一个整数N,(1<=N<=100)。
接下来的N行每行有一个数,数的长度范围为1<=len<=1000。
每个数都是一个正数,并且保证不包含前缀零。

输出:

可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。

样例输入:
3
11111111111111111111111111111
2222222222222222222222222222222222
33333333
样例输出:
33333333
11111111111111111111111111111

2222222222222222222222222222222222

#include
#include
#include
#include
 
using namespace std;
#define N 1001
struct Num{
    char num[N];
    int len;
 
    bool operator < (const Num &A) const{
        if(len != A.len)
            return len < A.len;
        else{
            for(int i = 0; i < len; i++)
            {
                if(num[i] != A.num[i])
                    return num[i] < A.num[i];
                else
                    continue;
            }
        }
    }
}buf[101];
 
int main()
{
    int n;
 
    while(scanf("%d", &n) != EOF){
        for(int i = 0; i < n; i++){
            scanf("%s", buf[i].num);
            buf[i].len = strlen(buf[i].num);
        }
 
        sort(buf, buf+n);
        for(int i = 0; i < n; i++){
            printf("%s\n", buf[i].num);
           // buf[i].len = strlen(buf[i].num);
        }
    }
    return 0;
}
/**************************************************************
    Problem: 1190
    User: various
    Language: C++
    Result: Accepted
    Time:10 ms
    Memory:1624 kb
****************************************************************/


你可能感兴趣的:(OJ)