Python實現全排列的一種演算法

2022-04-07 18:37:57 字數 672 閱讀 2414

列表arr =[1,2,3]輸出其全排列。

採取遞迴推導的方法來實現。

def perm(arr):

"""實現全排列"""

length = len(arr)

if length == 1: # 遞迴出口

return [arr]

result = # 儲存結果

fixed = arr[0]

rest = arr[1:]

for _arr in perm(rest): # 遍歷上層的每乙個結果

for i in range(0, length): # 插入每乙個位置得到新序列

new_rest = _arr.copy() # 需要複製乙份

new_rest.insert(i, fixed)

return result

if __name__ == '__main__':

r = perm([1,2,3])

for i in r:

print(i)

輸出結果

[1, 2, 3]

[2, 1, 3]

[2, 3, 1]

[1, 3, 2]

[3, 1, 2]

[3, 2, 1]

實現全排列的另一種方法 續

實現全排列的另一種方法,就是實現遞迴。實現思路 假如 allsort a b c 分治思想化為a allsort b c b allsort a c c allsort a b 遞迴一層後計算第二層時 如allsort b c 時,化為b allsort c 和 c allsort b 此時問題就明...

python實現全排列

有1,2,3,4這4個數字,能組成多少個互不相同且無重複數字的三位數,下面是二種解決示例,需要的朋友可以參考下 第一種方法 遞迴 複製 如下 def perms elements if len elements 1 yield elements else for perm in perms elem...

全排列的三種實現

題目描述 生成由1至n個數的全排列。輸入 輸入包含多組樣例,每組樣例輸入乙個整數n 1 n 9 輸出 按照字典序反序輸出,每個數值之間用空格隔開。每個排列單獨佔一行。逆字典序 include include include int num 10 int visited 10 int n,t void...