P1012 [NOIP 1998 提高组] 拼数
题目描述
设有 \(n\) 个正整数 \(a_1 \dots a_n\),将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。
输入格式
第一行有一个整数,表示数字个数 \(n\)。
第二行有 \(n\) 个整数,表示给出的 \(n\) 个整数 \(a_i\)。
输出格式
一个正整数,表示最大的整数
输入输出样例 #1
输入 #1
3
13 312 343
输出 #1
34331213
输入输出样例 #2
输入 #2
4
7 13 4 246
输出 #2
7424613
说明/提示
对于全部的测试点,保证 \(1 \leq n \leq 20\),\(1 \leq a_i \leq 10^9\)。
代码
利用string的"+"和"<"运算符
#include<bits/stdc++.h>
using namespace std;
string a[25];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>>a[i];}sort(a,a+n,cmp);for(int i=0;i<n;i++){cout<<a[i];}return 0;
}