这个题的意思是给你n个数字字符串,要求你把他们拼接组成字典序最大的一个串输出,那么很明显这是一个基础的贪心,通过将两个字符串a,b拼接,有两种情况:a+b或者b+a,把字典序变大的先排在前面,以这样的规则进行排序,最后按顺序输出就好了。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int cmp(const void*_a,const void*_b){
char* a = (char*)_a;
char* b = (char*)_b;
char s1[1000],s2[1000];
s1[0]='\0',s2[0]='\0';
strcat(s1,a),strcat(s1,b);
strcat(s2,b),strcat(s2,a);
if(strcmp(s1,s2)>0)return 0;
else return 1;
}
int main(){
char s[55][1000];
int n;
while(scanf("%d",&n)==1&&n){
getchar();
for(int i=0;i<n;i++){
scanf("%s",s[i]);
}
qsort(s,n,sizeof(s[0]),cmp);
for(int i=0;i<n;i++)
printf("%s",s[i]);
printf("\n");
}
return 0;
}