题目描述
设有nnn个正整数(n≤20)(n≤20)(n≤20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3n=3n=3时,333个整数131313,312312312,343343343联接成的最大整数为:343312133433121334331213
又如:n=4n=4n=4时,444个整数777,131313,444,246246246联接成的最大整数为:742461374246137424613
输入输出格式
输入格式:
第一行,一个正整数nnn。
第二行,nnn个正整数。
输出格式:
一个正整数,表示最大的整数
输入输出样例
输入样例#1:
3 13 312 343
输出样例#1:
34331213
这道题看似贪心却不能用贪心比如 300 30 就过不了,所以要用暴力;
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string a[10001],b;
int l;
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
if(a[i]+a[j]<a[j]+a[i]) //比较那个在前面大;
{
b=a[i];
a[i]=a[j];
a[j]=b;
}
}
}
for(int i=1;i<=n;i++)
{
cout<<a[i];
}
}