貪心基礎 最大整數

問題 G: 最大整數

時間限制: 1 Sec  內存限制: 128 MB
提交: 67  解決: 18
[提交][狀態][討論版]

題目描述

設有n個正整數(n≤20),將它們聯接成一排,組成一個最大的多位整數。 例如:n=3時,3個整數13,312,343聯接成的最大整數爲:34331213 又如:n=4時,4個整數7,13,4,246聯接成的最大整數爲:7424613

輸入

輸入格式如下: n n個數

輸出

輸出n個數連接起來的最大整數

樣例輸入

3
13  312  343

樣例輸出

34331213
自己做的時候wa了好多次,剛剛開始學貪心,還學得很不好。這裏可以給大家幾組測試數據:3 10 100 100; 5 100 102 9 12 150;。。。

這題一直很頭疼比較函數的寫法,嘗試了int,也嘗試了char數組,最後還是學到了string在這裏的妙用,感覺有必要記錄一下。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
struct node{
    string a;
};
inline bool cmp(node x,node y)
{
    if(x.a+y.a>y.a+x.a)return 1;
    else return 0;
}
int main()
{
    int n;
    while(cin>>n)
    {
        int t=n,r=0;
        node m[25];
        while(t--)
        {
            cin>>m[r++].a;
        }
        sort(m,m+n,cmp);
        for(int i=0;i<n;i++) cout<<m[i].a;
        printf("\n");
    }
    return 0;
}



發佈了48 篇原創文章 · 獲贊 8 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章