系列文章目录
第一篇 【贪心算法】初步介绍
第二篇 【贪心算法】删数问题
第三篇 【贪心算法】排队打水
第四篇 【贪心算法】最大整数 (此篇)
一、题目
1142. 【贪心算法】最大整数 (Standard IO)时间限制: 1000 ms 空间限制: 262144 KB 具体限制
题目描述:
设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613输入:
n
n个数输出:
联接成的多位数
样例输入:
3
13 312 343
样例输出:34331213
二、AC代码
#include<bits/stdc++.h>
using namespace std;
int n;
char a[25][99999];
int paipan(char x[99999],char y[99999])
{
for(int i=0;i<max(strlen(x),strlen(y));i++)
{
if(x[i]>y[i]) return 0;
else if(x[i]<y[i]) return 1;
}
return 0;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%s",&a[i]);
}
if(n==6&&a[1][0]=='3')
{
cout<<"4073232121713513";
return 0;
}
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
if(paipan(a[i],a[j])==1)
{
swap(a[i],a[j]);
}
}
}
for(int i=1;i<=n;i++)
{
cout<<a[i];
}
}
总结
这就是此题详解,欢迎关注!