描述:
輸入乙個大於0的整數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,vunexlg 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的前中後插入)
**:im程式設計客棧程式設計客棧port copy
def full_arrange(n):
data = # 中間結果
res = # 最終結果
if n == 1 :
return 1
res = [[1]]vunexlg
for i in range(2, n+1):
for j in range(len(res)): # 遍歷res陣列(二維陣列)
for x in range(len(res[j])+1): # 遍歷res陣列中的元素(一維陣列)
data = copy.copy(res[j]) # 淺拷貝
data.insert(x,i) # 在一維陣列的不同位置插入元素,獲得新的陣列
res.append(data)
x += 1
j += 1
# 刪除多餘陣列(原始陣列) 最後保留的資料(一維陣列的長度) == i
while true:
if len(res[0]) != i:
res.remove(res[0])
else:
break
i += 1
return res
print(full_arrange(n))
總結本文標題: python迴圈實現n的全排列功能
本文位址:
python實現全排列
有1,2,3,4這4個數字,能組成多少個互不相同且無重複數字的三位數,下面是二種解決示例,需要的朋友可以參考下 第一種方法 遞迴 複製 如下 def perms elements if len elements 1 yield elements else for perm in perms elem...
N個數的全排列
我採用的方法是類似密碼箱的轉輪來得到所有的排列組合 比如求 1,2,3,4的所有排列組合 採用遞減式輪轉來生成 n 4 以1234為初始值 得到如下的所有4個組合,放入最終的容器中 1 2 3 4 2 3 4 1 3 4 1 2 4 1 2 3 n 3 以上面的四個作為初始值,在第三位開始輪轉 得到...
遞迴實現全排列python
1.保持a不動,動bcd 2.保持b不動,動cd 3.保持c不動,動d def pailie head string if len string 1 for father string in string pailie head father string,string.replace father...