1. 程式人生 > >最大組合數

最大組合數

A - 和你在一起

時間限制:1秒 記憶體限制:128兆 題目描述: 我想和你在一起 直到我不愛你 寶貝 人和人 一場遊戲 我願意為你死去 如果我還愛你 寶貝 反正活著 也沒意義 寶貝 我也只能 這樣為你 ——李志《和你在一起》 現場4分10秒,小哥跟著逼哥嘶吼,淚流滿面。我要和你在一起,直到我不愛你。有這麼 n 個數字,聯成一排拼到一起便是我愛你的時間,那麼我們會在一起多久呢

例如: n=3 時,3 個整數 13,312,343 聯接成的最長時間為: 34331213。又如: n=4 時,4 個整數 7,13,4,246 聯接成的最長時間為: 7424613。

輸入: 第一行輸入T,代表下面有T組資料。 n (1≤n≤20),表示 n 個數。 接下來一行 n 個正整數,大小不超過 104。 輸出拼成的最長時間。 樣例輸入:

1
3
413 623 583

樣例輸出:

623583413
#include <cstdio>
int CMP(int a,int b)
{
    int a1=a,b1=b,la=10,lb=10;
    while(a/la)
    {
        la*=10;
    }
    while(b/lb)
    {
        lb*=10;
    }
    return (a*lb+b)-(b*la+a);
}
int main()
{
    int x,i,j,n;
    int d[20],t;
    scanf("%d",&x);
    while(x--){
        scanf("%d",&n);
        for(i=0; i<n; i++)
        {
            scanf("%d",&d[i]);
        }
        for(j=0; j<n-1; j++)
            for(i=0; i<n-1-j; i++)
            {
                if(CMP(d[i],d[i+1])<0)
                {
                    t=d[i+1];
                    d[i+1]=d[i];
                    d[i]=t;
                }
            }
        for(i=0; i<n; i++)
        {
            printf("%d",d[i]);
        }
        printf("\n");
    }
    return 0;
}