1. 程式人生 > >組個最小數

組個最小數

題目描述

給定數字0-9各若干個。你可以以任意順序排列這些數字,但必須全部使用。目標是使得最後得到的數儘可能小(注意0不能做首位)。例如:
給定兩個0,兩個1,三個5,一個8,我們得到的最小的數就是10015558。

現給定數字,請編寫程式輸出能夠組成的最小的數。

#include <iostream>

using namespace std;

int main()
{
    int a[10] = { 0 };
    int i, j = 0, num = 0, k;
    cout << "Please enter the numbers:";
    cin >> a[j];
    j++;
    while (j < 10) {
        cin >> a[j];
        j++;
    }

    if(a[0] != 0) {
        num++;
        while (a[num] == 0) {
            num++;
        }
        cout << num;
    }

    a[num] = a[num] - 1;
    
    for (num = 0; num<10;num++) {
        if (a[num] != 0) {
            for (k = 0; k < a[num]; k++)
                   cout << num;        
        }    
    }

    return 0;
}