add python code
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
"""
|
||||
全排列生成 — 递归交换法
|
||||
生成 n 个元素的所有排列 (n!)
|
||||
"""
|
||||
|
||||
def permute(arr, start, end):
|
||||
"""递归生成全排列"""
|
||||
if start == end:
|
||||
print("".join(map(str, arr)))
|
||||
else:
|
||||
for i in range(start, end + 1):
|
||||
arr[start], arr[i] = arr[i], arr[start]
|
||||
permute(arr, start + 1, end)
|
||||
arr[start], arr[i] = arr[i], arr[start] # 回溯
|
||||
|
||||
def permute_unique(arr, start, end):
|
||||
"""生成去重全排列"""
|
||||
if start == end:
|
||||
print("".join(map(str, arr)))
|
||||
else:
|
||||
seen = set()
|
||||
for i in range(start, end + 1):
|
||||
if arr[i] not in seen:
|
||||
seen.add(arr[i])
|
||||
arr[start], arr[i] = arr[i], arr[start]
|
||||
permute_unique(arr, start + 1, end)
|
||||
arr[start], arr[i] = arr[i], arr[start]
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("全排列 [1,2,3]:")
|
||||
permute([1, 2, 3], 0, 2)
|
||||
|
||||
print("\n去重全排列 [1,1,2]:")
|
||||
permute_unique([1, 1, 2], 0, 2)
|
||||
Reference in New Issue
Block a user