這題我是想不到什麼比較簡便的方法,只能用隨機庫將順序打亂,不斷嘗試可能
我想知道有沒有規律可循,大佬呢
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的全排列。每種排列佔一行,數字間無空格。排列的輸出順序為字典序,...