九度OJ题目1190-大整数排序

题目描述:
对N个长度最长可达到1000的数进行排序。

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

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

样例输入:
3
11111111111111111111111111111
2222222222222222222222222222222222
33333333
样例输出:
33333333
11111111111111111111111111111
2222222222222222222222222222222222
参考代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
struct E {
    string s;
	int len;
}tem[101];
bool cmp(E a, E b) {
	a.len = a.s.length();
	b.len = b.s.length();
	if (a.len!=b.len) return a.len<b.len;
	else
		return a.s<b.s;
}
int main() {
	int n;
	while (cin>>n) {
		for (int i = 0; i < n; i++) {
			cin >> tem[i].s;
		}
		sort(tem, tem + n,cmp);

		for (int i = 0; i < n; i++) {
			cout << tem[i].s << endl;
		}
	}
	return 0;
}
发布了53 篇原创文章 · 获赞 3 · 访问量 3517

猜你喜欢

转载自blog.csdn.net/sinat_38292108/article/details/88317605
今日推荐