P1012 拼数
-
- 16.2K通过
- 32.4K提交
- 题目提供者CCF_NOI
- 评测方式云端评测
- 标签NOIp提高组1998
- 难度普及-
- 时空限制1000ms / 128MB
提交 题解
- 提示:收藏到任务计划后,可在首页查看。
最新讨论显示
推荐的相关题目显示
题目描述
设有nn个正整数(n≤20)(n≤20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3n=3时,33个整数1313,312312,343343联接成的最大整数为:3433121334331213
又如:n=4n=4时,44个整数77,1313,44,246246联接成的最大整数为:74246137424613
输入输出格式
输入格式:
第一行,一个正整数nn。
第二行,nn个正整数。
输出格式:
一个正整数,表示最大的整数
输入输出样例
输入样例#1:
3 13 312 343
输出样例#1:
34331213
Analysis:
题意很清楚。只有贪心就可以了。即(如果b+a>a+b 则交换位置)?
有同学会问为什么不直接比较a和b呢?下面举个例子:
当输入:2
300 30时
易知答案为30300。
可是如果单纯的字符串比较,那么答案为30030。
因此要比较b+a和a+b
AC_CODE:
#include<bits/stdc++.h>
using namespace std;
string tmp;
string ans[100];
bool cmp(string a, string b)
{
return a + b > b + a;
}
int main()
{
int n; cin >> n;
for (int i = 0; i < n; ++i)cin >> ans[i];
sort(ans, ans + n,cmp);
for (int i = 0; i < n; ++i)cout<< ans[i];
}