如果cmp用的是 return a>b,则特殊情况321 32会出现错误。 正确应为32321,但按照cmp会出现32132的错误。
但是用 return (a+b>b+a)就不会有这样的问题啦
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 struct node 5 { 6 string b; 7 }a[30]; 8 9 bool cmp(const node &s1,const node &s2) 10 { 11 return (s1.b+s2.b>s2.b+s1.b); 12 } 13 int main() 14 { 15 int n; 16 cin>>n; 17 for(int i=1;i<=n;i++)cin>>a[i].b; 18 19 sort(a+1,a+1+n,cmp); 20 21 for(int i=1;i<=n;i++)cout<<a[i].b; 22 23 25 return 0; 26 }