贪心题
对于序列中的两个数,交换顺序不改变其他数的值,所以要选择两种顺序较大的那一个。
直接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; }