1. 程式人生 > 程式設計 >Python迴圈實現n的全排列功能

Python迴圈實現n的全排列功能

描述:

輸入一個大於0的整數n,輸出1到n的全排列:

例如:

n=3,輸出[[3,2,1],[2,3,1,3],[3,2],[1,3]]
n=4,輸出[[4,4,4],[4,4]]

思路:

為1時,結果為1
為2時,結果就是兩種:1,2 2,1(1的前後插入)
為3時,結果就是六種:1,3 1,2 3,1 (1,2的前中後插入)
3,1 2,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陣列(二維陣列)
      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的全排列功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!