拼数

题目描述

设有nnn个正整数(n≤20)(n≤20)(n20),将它们联接成一排,组成一个最大的多位整数。

例如: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];
}
}

猜你喜欢

转载自www.cnblogs.com/handsomelhy/p/9572663.html