洛谷P1012 [NOIP1998 提高组] 拼数

2023 / 10 / 29

题目描述

设有 $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$。

题解

#include <bits/stdc++.h> using namespace std; int n; string a[50]; bool cmp (string a, string b) { return (a + b) > (b + a); } int main() { 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; }