
设有n个正整数(n ≤ 20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613
题目
- 原题地址:拼数
- 题目编号:NC16783
- 题目类型:贪心
- 时间限制:C/C++ 1秒,其他语言2秒
- 空间限制:C/C++ 262144K,其他语言524288K
1.题目大意
2.题目分析
- 按照字典序排序即可,但是需要注意比较函数的写法
- 如果直接比较
2
和21
,得到的结果是212
(21
>2
),但是期望的结果是221
- 所以在比较两个字符串谁在前的时候,应该确保用来比较的字符串长度相同,详见代码
3.题目代码
#include <bits/stdc++.h>
using namespace std;
bool cmp(string a, string b)
{
string s1 = a + b;
string s2 = b + a;
return s1 > s2;
}
int main() {
int n;
cin >> n;
string s[n];
for(int i=0;i<n;i++)
cin >> s[i];
sort(s, s+n,cmp);
for(int i=0;i<n;i++)
cout << s[i];
}