第6章 8 輸出全排列(選作) 20分

2021-10-07 06:36:57 字數 556 閱讀 4403

這題我是想不到什麼比較簡便的方法,只能用隨機庫將順序打亂,不斷嘗試可能

我想知道有沒有規律可循,大佬呢

lst = set() #集合保證新增進來的數不重複

l = [str(i) for i in range(1,n+1)] #將所有數變成字串然後乙個個的組成列表

cnt = 1

for i in range(1,n+1):

cnt *= i #cnt就是總的可能數,其實就是求n的階乘

while len(lst)

random.shuffle(l)#打亂列表裡面所有數的順序

lst.add("".join(l))#用join將所有數連線起來

for i in sorted(lst):#排序,也就是題目所所說的字典序

print(i)

7 14 輸出全排列(20 分)

請編寫程式輸出前 n個正整數的全排列 0 並通過9個測試用例 即 n從1到9 觀察 n逐步增大時程式的執行時間。輸入給出正整數 n 輸出1到 n的全排列。每種排列佔一行,數字間無空格。排列的輸出順序為字典序,即序列a 1 a 2 a n 排在序列b 1 b 2 b n 之前,如果存在 k使得,並且 ...

7 58 輸出全排列 20分

宣告乙個模板,虛擬型別名為t 抒抒說的博文 template class type void perm type list,int k,int m permutation else inline void swap type a,type b c 中的 inline 用法 菜鳥教程 通過交換,容易不...

PTA教輔 輸出全排列 20分

5 23 輸出全排列 20分 請編寫程式輸出前nn n個正整數的全排列 n 10n 10 n 10 並通過9個測試用例 即nn n從1到9 觀察nn n逐步增大時程式的執行時間。輸入給出正整數nn n 10 10 10 輸出1到nn n的全排列。每種排列佔一行,數字間無空格。排列的輸出順序為字典序,...