最小數排序
阿新 • • 發佈:2018-12-10
題目:
給定數字0~9若干個。你可以以任意順序排列這些數字,但必須全部使用。目標是使得最後得到的數儘可能小(注意0不能為首
位)。例如:給定兩個0,兩個1,三個5,一個8,我們得到的最小的數就是:10015558.
現給定數字,請編寫程式輸出能夠組成的最小的數。
輸入樣例1:
0 0 5 8 5 1 5 1
輸出樣例1:
10015558
輸入樣例2:
5 6 4 2 3 6 5 0 0 0 6
輸出樣例2:
20003455666
程式碼示例:
#include <iostream> using namespace std; int main() { int baseNum[10] = { 0 }; char theGet; int count = 0; while ((theGet = getchar()) != '\n') { baseNum[theGet-'0']++; count++; } int n; for (n = 1; n < 10; n++) // 首位判斷 { if (baseNum[n] == 0) continue; else { cout << n; baseNum[n]--; break; } } for (n = 0; n < 10; n++) // 其他位判斷 { if (baseNum[n] == 0) continue; else { cout << n; baseNum[n]--; if (baseNum[n] != 0) n--; } } return 0; }