魈凯KBS • 4个月前
第一种有最时尚的string
using namespace std; bool cmp(string x,string y) {
return x+y>y+x;//合起来判断不然WA
} int main() {
//freopen("bignum.in","r",stdin);
//freopen("bignum.out","w",stdout);
int n;
string a[105];
cin>>n;
for(int i=0;i<n;i++) {
cin>>a[i];
}
sort(a,a+n,cmp);//浅浅用一下sort
for(int i=0;i<n;i++)
{
cout<<a[i];
}
return 0;//华丽结束
}
评论:
第二种,初学者专用
using namespace std; string a[105]; bool cmp(string a,string b){
return a+b>b+a; } int main() {
int n; cin>>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]; } return 0; }
第三种,直接·暴力枚举 bai必通AT
using namespace std;
int main() { char s[101][30],t1[65],t2[65]; int n; scanf("%d",&n); for (int i=1; i<=n; i++)
scanf("%s",&s[i]);
for (int i=1; i<n; i++) for(int j=1; j<=n-i; j++) { strcpy(t1,s[j]); strcpy(t2,s[j+1]); strcat(t1,s[j+1]); strcat(t2,s[j]); if(strcmp(t1,t2)<0) swap(s[j],s[j+1]); } for(int i=1; i<=n; ++i) printf("%s",s[i]); printf("\n"); return 0; }