[NOIP1998 提高组] 拼数

题目描述

设有 个正整数​ a1…an,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。

输入格式

第一行有一个整数,表示数字个数 n

第二行有 n 个整数,表示给出的 n 个整数 a_i

输出格式

一个正整数,表示最大的整数

输入输出样例

输入 #1

3
13 312 343

输出 #1

34331213

输入 #2

4
7 13 4 246

输出 #2

7424613

说明/提示

对于全部的测试点,保证 1≤n≤20,1≤a_i ≤10^9 。

 

题目大意:给你n个正整数,把它们重新排列,使得排列后形成的数最大。

可以使用STL中的string类来解决。

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 const int maxn=25;
 5 int n;
 6 string in[maxn];
 7 bool cmp(const string &a,const string &b)    //重载cmp 
 8 {
 9     return a+b>b+a;
10 }
11 int main()
12 {
13     cin>>n;
14     for(int i=1;i<=n;i++)
15         cin>>in[i];
16     sort(in+1,in+1+n,cmp);
17     for(int i=1;i<=n;i++)
18          cout<<in[i];
19     cout<<endl;
20     return 0;
21 }

 

posted @ 2021-05-28 16:27  熊猫耳朵  阅读(41)  评论(0编辑  收藏  举报