题目连接:点击打开链接
设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613
程序输出:联接成的多位数
例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613
程序输出:联接成的多位数
47 13 4 246
7424613
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int mystrcmp(char *s1, char *s2)
{
char t1 = *s1, t2 = *s2;
while((*s1 == *s2) && *s1 != '\0' && *s2 != '\0')
{
s1++;
s2++;
}
if(*s1 == '\0')
return t1 - *s2;
else if(*s2 == '\0')
return *s1 - t2;
return *s1 - *s2;
}
int main()
{
int i, j , n;
char a[25][10], t[10];
while(cin >> n){ // cin 输入自动去掉换行符号
memset(a, 0, sizeof(a));
for(i=0; i<n; i++)
cin >> a[i];
for(i = 0; i < n; i++)
for(j = i+1; j < n; j++)
{
if(mystrcmp(a[j], a[i]) >= 0)
{
strcpy(t, a[j]);
strcpy(a[j], a[i]);
strcpy(a[i], t);
}
}
for(i = 0; i < n; i++)
cout << a[i];
cout << endl;
}
return 0;
}