拼数
问题描述
给定 𝑛n 个正整数 𝑎1,𝑎2,…,𝑎𝑛a1,a2,…,an,你可以将它们任意排序。
现要将这 𝑛n 个数字连接成一排,即令相邻数字收尾相接,组成一个数。
问,这个数最大可以是多少。
输入格式
第一行输入一个正整数 𝑛n(1≤𝑛≤201≤n≤20)。
第二行输入 𝑛n 个正整数 𝑎1,𝑎2,…,𝑎𝑛a1,a2,…,an(1≤𝑎𝑖≤1051≤ai≤105)。
输出格式
输出一个整数,表示答案。
样例输入
3
13 312 343
样例输出
34331213
解释
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
#include <iostream> #include <algorithm> #include<string> using namespace std; bool compare(string a, string b) {//比较函数 return a + b > b + a; } int main() { string a[100];//字符数组 int n; cin>>n; for(int i=0;i<n;i++){//输入每个数字的值 cin>>a[i]; } sort(a, a + n, compare);//从大到小排序 string s; for(int i=0;i<n;i++){//将数组内容存在 s 中 s+=a[i]; } cout<<s; return 0; }