贪心题
对于序列中的两个数,交换顺序不改变其他数的值,所以要选择两种顺序较大的那一个。
直接a+b>b+a就行了
写题解之前一时间没想出来这种解法,想的是比较最高位的数来排序,这其实也可以,但当位数不同时要考虑的情况其实也是上面的情况。
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(string a,string b)
{
a+b>b+a;
}
string a[100];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++)cout<<a[i];
cout<<endl;
}
京公网安备 11010502036488号