最小数排序
題目:
給定數字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()) != '
')
{
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;
}
總結