题目大意:题意很好懂,问所给数字能组成的最大数是多少。
解题思路:主要是一个编写排序函数 cmp 的技巧,单纯按大小排序再组合显然是行不通的:如 9、90,90 > 9,但显然 909 < 990。这里选择两两组合比较就很简单。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<queue>
#include<map>
using namespace std;
string num[55];
bool cmp (string a, string b) {
return a + b > b + a;
}
int main() {
int N;
while (scanf("%d", &N)!= EOF && N) {
for (int i = 0; i < N; i++)
cin >> num[i];
sort(num, num+N, cmp);
for (int i = 0; i < N; i++)
cout << num[i];
cout << endl;
}
return 0;
}