首先看一下题目!!!
不能将数字直接用数值比较,例如:134和23
如是数值比较,结果是13423,但是它比23134小,所以不成立!!!
所以我开始考虑用字符串。
但是新的问题来了,例如:210和21
如果先进行比较,得出结果是21021,但是它比21210小!!!
所以我考虑将两个数字进行合并,去比较合并之后的数。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
string s[25];
bool cmp(string a, string b) {
return a + b > b + a;
}
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)cin >> s[i];
sort(s + 1, s + n + 1, cmp);
for (int i = 1; i <= n; i++)cout << s[i];
return 0;
}
顾yh