拼数
一道简单的关于最大字符串问题
题目描述 设有nnn个正整数(n≤20)(n≤20)(n≤20),将它们联接成一排,组成一个最大的多位整数。
例如:
n=3时,3个整数131313 , 312312312 , 343343343联接成的最大整数为:343312133433121334331213
又如:n=4时,4个整数777 , 131313 , 444 , 246246246联接成的最大整数为:742461374246137424613
输入格式
第一行,一个正整数n。
第二行,n个正整数。
输出格式:
一个正整数,表示最大的正整数(最大的串)
样例:
输入:
3
13 312 343
输出:34331213
解析:
要用到特殊的排序:
if(a[c]+a[b]>a[b]+a[c])
{
swap(a[c],a[b]);
}
例如:300 和 30
输出为: 30300 > 30030
完整c++代码:
#include<iostream>
using namespace std;
int main()
{
int b,c,n;
string a[30];
cin>>n;
for(b=1;b<=n;b++) cin>>a[b];
for(b=1;b<n;b++)
{
for(c=b+1;c<=n;c++)
{
if(a[c]+a[b]>a[b]+a[c])
{
swap(a[c],a[b]);
}
}
}
for(b=1;b<=n;b++)cout<<a[b];
return 0;
}