洛谷刷题11:拼数(P1012)

题目描述

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

输入格式

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

第二行有 n个整数,表示给出的 n个整数 a[i]

输出格式

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

输入输出样例

输入 #1
3
13 312 343
输出 #1
34331213
输入 #2
4
7 13 4 246
输出 #2
7424613
#include<iostream>
#include<algorithm>
#include<iomanip>
#include<math.h>
#include<cstring>
#include<cstdio>
#include<cctype>
using namespace std;
string a[1000];
bool cmp(string a, string b)
{
    return a + b > b + a;
}
int main()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++)
        cin >> a[i];
    sort(a+1, a + n+1, cmp);
    for (int i = 1; i <= n; i++)
        a[0] += a[i];
    cout << a[0];
}

自己写的cmp函数中,a+b>b+a是精髓

posted @ 2021-02-08 08:28  _翩若惊鸿  阅读(170)  评论(0编辑  收藏  举报