题目描述
设有 n 个正整数 a1...an,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。
输入格式
第一行有一个整数,表示数字个数 n。
第二行有 n 个整数,表示给出的 n 个整数 ai。
输出格式
一个正整数,表示最大的整数
输入输出样例
输入 #1复制
3
13 312 343
输出 #1复制
34331213
输入 #2复制
4
7 13 4 246
输出 #2复制
7424613
说明/提示
对于全部的测试点,保证 1≤n≤20,1≤ai≤109。
NOIP1998 提高组 第二题
cs
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int compar(const void *a,const void *b)
{
return strcmp((char*)a,(char*)b);
}
int main()
{
int n,i;
scanf("%d",&n);
char str[25][25]={'\0'};
for(i=0;i<n;i++)
scanf("%s",str[i]);
qsort(str,n,sizeof(str[0]),compar);
for(i=n-1;i>=0;i--)
{
if(str[i][0]==str[i-1][0])
{
char c[25]={'\0'},a[25]={'\0'},b[25]={'\0'};
strcpy(b,str[i-1]);
strcpy(a,str[i]);
if(strcmp(strcat(b,a),strcat(a,b))>0)
{
strcpy(c,str[i-1]);
strcpy(str[i-1],str[i]);
strcpy(str[i],c);
}
}
}
for(i=n-1;i>=0;i--)
printf("%s",str[i]);
return 0;
}
利用qsort函数对二维字符串排序