大整数排序

来源:互联网 发布:小黑裙香水淘宝 编辑:程序博客网 时间:2024/06/15 11:58

题目1190:大整数排序


题目描述:
对N个长度最长可达到1000的数进行排序。
输入:
输入第一行为一个整数N,(1<=N<=100)。
接下来的N行每行有一个数,数的长度范围为1<=len<=1000。
每个数都是一个正数,并且保证不包含前缀零。
输出:
可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。
样例输入:
3
11111111111111111111111111111
2222222222222222222222222222222222
33333333
样例输出:
33333333
11111111111111111111111111111
2222222222222222222222222222222222
来源:
2006年华中科技大学计算机研究生机试真题


参考代码:

#include <stdio.h>#include <string.h>#include <algorithm>struct E{    char str[1001];    int size;    bool operator < (const E &A) const{        if(size!=A.size) return size<A.size;        else{            for(int i=0; i<size; i++){                if(str[i]!=A.str[i])           //不要只是比较最高位,因为最高位有可能相等,所以比完最高位后还要比较低位。                    return str[i]<A.str[i];            }            return str[0]<A.str[0];        }    }}buf[101];   //对于字符串的一些比较之类的操作,学会使用结构体int main() {    int N;    while (scanf("%d", &N)!=EOF) {        int i=0;        int n=N;        while (N--) {            scanf("%s", buf[i].str);            buf[i].size = strlen(buf[i].str);            i++;        }        sort(buf, buf+n);        for (int j=0; j<n; j++) {            printf("%s\n", buf[j].str);        }    }    return 0;}
0 0
原创粉丝点击