题意:给定n个数,让你将他们重新组合使得它们组成的数字最大。
思路:贪心,很容易想到的是按位的首个数字比较大小,相同则往后比,但是写起来好困难。。。正解:将他们用字符串读入,相邻数字只有两种情况,要么a+b,要么b+a,比较二者大小,最后输出即可。
AC代码:
#include<bits/stdc++.h>
using namespace std;
bool cmp(string a,string b){
return a+b > b+a;
}
int main(void){
int n;
while(cin>>n&&n){
string a[n];
for(int i = 0; i < n; i++){
cin>>a[i];
}
sort(a,a+n,cmp);
for(int i= 0; i < n; i++){
cout<<a[i];
}
cout<<endl;
}
return 0;
} 
京公网安备 11010502036488号