PAT乙級1023 組個最小數 20分

2021-10-05 16:38:24 字數 1006 閱讀 3253

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

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

輸入格式:

輸入在一行中給出 10 個非負整數,順序表示我們擁有數字 0、數字 1、……數字 9 的個數。整數間用乙個空格分隔。10 個數字的總個數不超過 50,且至少擁有 1 個非 0 的數字。

輸出格式:

在一行中輸出能夠組成的最小的數。

輸入樣例:

220

0030

010

輸出樣例:

10015558
思路:你要先找到第乙個最小的且個數不為零的數字(因為是按順序給出的個數,所以直接判斷是否為零即可,大小不用判斷了。找到後,比如記為k,先輸出一位該數字,代表首位,然後輸出所有的0,如果沒有0,繼續在0之後找,然後順序輸出即可。當有比k大的數字要輸出時,記得先把剩餘的k輸出完再輸出比它大的,使用了map集合,分別代表數字及其個數,int型的它會預設為0)
#include

using

namespace std;

#include

intmain()

for(

int i =

1;i<

10;i++)}

cout << pos;

for(

int j =

0;j;j++

)for

(int j =

0;j;j++

)for

(int i = pos+

1;i<

10;i++)}

return0;

}

PAT乙級1023 組個最小數

1023 組個最小數 20 20 分 給定數字0 9各若干個。你可以以任意順序排列這些數字,但必須全部使用。目標是使得最後得到的數盡可能小 注意0不能做首位 例如 給定兩個0,兩個1,三個5,乙個8,我們得到的最小的數就是10015558。現給定數字,請編寫程式輸出能夠組成的最小的數。輸入格式 每個...

PAT 乙級 1023 組個最小數

1023 組個最小數 20 20 分 給定數字0 9各若干個。你可以以任意順序排列這些數字,但必須全部使用。目標是使得最後得到的數盡可能小 注意0不能做首位 例如 給定兩個0,兩個1,三個5,乙個8,我們得到的最小的數就是10015558。現給定數字,請編寫程式輸出能夠組成的最小的數。輸入格式 每個...

PAT乙級1023組個最小數

題目描述 給定數字 0 9 各若干個。你可以以任意順序排列這些數字,但必須全部使用。目標是使得最後得到的數盡可能小 注意 0 不能做首位 例如 給定兩個 0,兩個 1,三個 5,乙個 8,我們得到的最小的數就是 10015558。現給定數字,請編寫程式輸出能夠組成的最小的數。輸入格式 輸入在一行中給...