链接:https://ac.nowcoder.com/acm/problem/16783
来源:牛客网
题目描述
设有n个正整数(n ≤ 20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613
输入描述:
第一行,一个正整数n。
第二行,n个正整数。
输出描述:
一个正整数,表示最大的整数
示例1
输入
复制
3
13 312 343
输出
复制
34331213
贪心算法(又称贪婪算法)是指,在对 问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部 最优解。
贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
using namespace std;
bool cmp(string x,string y)
{
return x+y>y+x;//x+y>y+x时返回true,相当于x<y时返回true,所以此时把x放前面
}
int main()
{
int n;
string a[25];
scanf("%d",&n);
for(int i=0; i<n; ++i){
cin>>a[i];
}
sort(a,a+n,cmp);
for(int i=0; i<n; ++i)
cout<<a[i];
return 0;
}