思路

这道题数据范围很小,可以直接给字符串排序,大的在前小的在后,然后直接输出就好了。
注意如果用strcmp进行字符串大小比较的话,“123”会在"12"之后,所以正确方法应该是s1+s2>s2+s1。

代码

#include<bits/stdc++.h>
using namespace std;

string s[25];

int n;

int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        cin>>s[i];
    }
    for(int i=1;i<=n;i++){
        for(int j=i+1;j<=n;j++){
            if(s[i]+s[j]<s[j]+s[i]){
                swap(s[i],s[j]);
            }
        } 
    }
    for(int i=1;i<=n;i++) cout<<s[i];
    return 0;
}