描述:
輸入一個大于0的整數(shù)n,輸出1到n的全排列:
例如:
n=3,輸出[[3, 2, 1], [2, 3, 1], [2, 1, 3], [3, 1, 2], [1, 3, 2], [1, 2, 3]] n=4,輸出[[4, 3, 2, 1], [3, 4, 2, 1], [3, 2, 4, 1], [3, 2, 1, 4], [4, 2, 3, 1], [2, 4, 3, 1], [2, 3, 4, 1], [2, 3, 1, 4], [4, 2, 1, 3], [2, 4, 1, 3], [2, 1, 4, 3], [2, 1, 3, 4], [4, 3, 1, 2], [3, 4, 1, 2], [3, 1, 4, 2], [3, 1, 2, 4], [4, 1, 3, 2], [1, 4, 3, 2], [1, 3, 4, 2], [1, 3, 2, 4], [4, 1, 2, 3], [1, 4, 2, 3], [1, 2, 4, 3], [1, 2, 3, 4]]
思路:
為1時,結果為1 為2時,結果就是兩種:1,2 2,1(1的前后插入) 為3時,結果就是六種:1,2,3 1,3,2 3,2,1 (1,2的前中后插入) 3,2,1 2,3,1 2,1,3 (2,1的前中后插入)
代碼:
import copy def full_arrange(n): data = [] # 中間結果 res = [] # 最終結果 if n == 1 : return 1 res = [[1]] for i in range(2, n+1): for j in range(len(res)): # 遍歷res數(shù)組(二維數(shù)組) for x in range(len(res[j])+1): # 遍歷res數(shù)組中的元素(一維數(shù)組) data = copy.copy(res[j]) # 淺拷貝 data.insert(x,i) # 在一維數(shù)組的不同位置插入元素,獲得新的數(shù)組 res.append(data) x += 1 j += 1 # 刪除多余數(shù)組(原始數(shù)組) 最后保留的數(shù)據(jù)(一維數(shù)組的長度) == i while True: if len(res[0]) != i: res.remove(res[0]) else: break i += 1 return res print(full_arrange(n))
總結
以上所述是小編給大家介紹的Python循環(huán)實現(xiàn)n的全排列功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
