九度题目1190:大整数排序

来源:互联网 发布:免费网络直播加速器 编辑:程序博客网 时间:2024/05/22 18:56
题目描述:

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

输入:

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

输出:

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

样例输入:
311111111111111111111111111111222222222222222222222222222222222233333333
样例输出:
3333333311111111111111111111111111111

2222222222222222222222222222222222

#include<iostream>#include<stdio.h>#include<algorithm>#include<string.h> using namespace std;#define N 1001struct 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****************************************************************/


0 0
原创粉丝点击