系列文章目录
第一篇 【贪心算法】初步介绍
第二篇 【贪心算法】删数问题
第三篇 【贪心算法】排队打水
第四篇 【贪心算法】最大整数 (此篇)
一、题目
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]; } }
总结
这就是此题详解,欢迎关注!