1. 程式人生 > >P1012 拼數(字串)

P1012 拼數(字串)

題目描述

設有 nn 個正整數 (n≤20)(n≤20) ,將它們聯接成一排,組成一個最大的多位整數。

例如: n=3n=3 時, 33 個整數 1313 , 312312 , 343343 聯接成的最大整數為: 3433121334331213

又如: n=4n=4 時, 44 個整數 77 , 1313 , 44 , 246246 聯接成的最大整數為: 74246137424613

輸入輸出格式

輸入格式:

第一行,一個正整數 nn 。

第二行, nn 個正整數。

輸出格式:

一個正整數,表示最大的整數

輸入輸出樣例

輸入樣例#1: 

3
13 312 343

輸出樣例#1: 

34331213

C++的string類定義了<元素呢和+運算

'<'的定義為按字典序比較,'+'的定義為字串直接連線。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
string a[21];
bool cmp(string a,string b)
{
    return a+b>b+a;//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++)cout<<a[i];
    return 0;
}