wangjiajian • 2年前
``
我本想用暴力枚举每一种连接情况,但是n小于等于100,就是说时间是100的阶乘,有可能会爆。
后来我决定用奇奇怪怪的贪心。先把整数a和b转成字符串,比较先a后b的情况和先b后a的大小。如果前者大,那么就把a放在b前;如果后者大就把b放在a前面。连接完以后,字符串ab就合并为a,再读进来一个b,以此类推,再次拼接。
评论:
校领导的代码:
#include <bits/stdc++.h>
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;
}