中階班例題
數字排列IV
時間限制 2000 ms · 記憶體限制 256 MB · C++
給定 $N$ 個範圍介於 $0$ 到 $9$ 的數字,請列出這 $N$ 個數字所有可能的排列組合,也就是這 $N$ 個數字的全排列(permutations),並依照每一組排列中數字的順序由小到大排列所有結果,同一個數值應只出現一次。
輸入說明
先輸入一個數字 $N$ 並換行,代表此題有 $N$ 個數字,接著輸入 $N$ 個數字 $n_i$,數字間彼此以一個空格區分。
- $ 1 \le N \le 8 $
- $ 0 \le n_i \le 9 $
輸出說明
請你輸出這些數字的排列結果,每個排列輸出皆須換行,且數值應由小至大依序輸出,如有重複的數值應僅輸出一次,例如第二個範例測資
請注意:如果0為首,請去掉0,例如0157應輸出157,但單一個數字0應予以保留
範例測資二解釋:
$\{1,2,2\}$如果我們對於相同的數字編碼會像這樣$\{1,2_a,2_b\}$,而實際的組合有下面這幾種
- $ 1,2_a,2_b $
- $ 1,2_b,2_a $
- $ 2_a,1,2_b $
- $ 2_b,1,2_a $
- $ 2_a,2_b,1 $
- $ 2_b,2_a,1 $
但實際上在組合後,只有122、212、221這三個數字,所以輸出時應只能輸出這三個數字
範例
範例輸入 1
4 5 0 7 1
範例輸出 1
157 175 517 571 715 751 1057 1075 1507 1570 1705 1750 5017 5071 5107 5170 5701 5710 7015 7051 7105 7150 7501 7510
範例輸入 2
3 1 2 2
範例輸出 2
122 212 221
範例輸入 3
2 0 0
範例輸出 3
0
範例輸入 4
3 1 0 0
範例輸出 4
1 10 100
C++77 / 50,000
「跑範例測資」只跑題目敘述上的範例,會顯示你的輸出與正確答案的對照; 「提交評測」會跑完整的測資並給實際結果,但不會顯示測資內容。兩者都不需要帳號,也不會留下成績紀錄。