首页 > 学院 > 开发设计 > 正文

大整数排序

2019-11-08 01:54:43
字体:
来源:转载
供稿:网友

题目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;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表