1. 程式人生 > >數串題

數串題

發現自己的解題能力直線下降,是該好好訓練訓練了。


設有Ñ個正整數,將他們連線成一排,組成一個最大的多位整數。
如:N = 3時,3個整數13312343,連成的最大整數為34331213.
如:N = 4時,4個整數7,13,4,246連線成的最大整數為7424613。

 

思路是這樣子的,定義一個字串陣列,將各個整數存放進去,利用兩字串合併後的比較,即可求解

#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
    int n,i,j;
    string a[201],temp;
    while(scanf("%d",&n)!=EOF)
    {
        for(i=0;i<n;i++)
            cin>>a[i];
        for(i=0;i<n-1;i++)
        {
            for(j=n-1;j>i;j--)
            {
                if(a[j-1]+a[j]<a[j]+a[j-1])//如果該條件成立 則交換
                {
                    temp = a[j];
                    a[j] = a[j-1];
                    a[j-1] = temp;
                }
            }
        }
        for(i=0;i<n;i++)
            cout<<a[i];
        printf("\n");
    }
}