拼数 C/C++

题目描述

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

输入格式

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

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

输出格式

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

输入输出样例

输入 #1
3
13 312 343
输出 #1
34331213
输入 #2
4
7 13 4 246
输出 #2
7424613

说明/提示

1 <= n <= 20 , 1 <= ai <= 1e9

代码如下

#include<iostream>
using namespace std;
int main()
{
    int n;
    string a[30];
    
    cin >> n;
    for(int i = 1; i <= n; i++)
        cin >> a[i];
        
    for(int i = 1; i <= n-1; i++)
        for(int j = 1; j <= n-i; j++)
            if(a[j + 1] + a[j] > a[j] + a[j + 1])
                swap(a[j] , a[j + 1]);    
    
    for(int i = 1; i <= n; i++)
        cout << a[i];    

    return 0;
}

原文地址:https://www.cnblogs.com/go-alltheway/p/13447134.html