字符串的全排列
输出参数是字符串,输出值为列表
def permutation(str):
lenstr = len(str)
if lenstr < 2:
return str
else:
result = []
for i in range(lenstr):
ch = str[i]
rest = str[0:i] + str[i + 1:lenstr]
for s in permutation(rest):
result.append(ch + s) # 将ch与子问题的解依次组合
return result
print(permutation('ab'))
输出
[
′
a
b
′
,
′
b
a
′
]
['ab', 'ba']
[′ab′,′ba′]
列表数字的全排列
def permutation(nums, p, q):
if p == q:
s.append(list(nums))
else:
for i in range(p, q):
nums[i], nums[p] = nums[p], nums[i]
permutation(nums, p + 1, q)
nums[i], nums[p] = nums[p], nums[i]
s = []
nums = [i for i in range(1, 4)]
permutation(nums, 0, len(nums))
print(s)
输出
[
[
1
,
2
,
3
]
,
[
1
,
3
,
2
]
,
[
2
,
1
,
3
]
,
[
2
,
3
,
1
]
,
[
3
,
2
,
1
]
,
[
3
,
1
,
2
]
]
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 2, 1], [3, 1, 2]]
[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,2,1],[3,1,2]]