"""
全排列问题
给定一个不含重复数字的数组
返回所有可能的全排列,
可以按任意顺序返回结果。
"""
def backtrack(numbers, result, begin):
"""
使用回溯法生成数字的所有排列。
参数:
numbers -- 待排列的数字列表
result -- 用于存储所有排列结果的列表
begin -- 当前处理的起始位置
"""
length = len(numbers)
if begin == length:
result.append(numbers.copy())
for i in range(begin, length):
numbers[begin], numbers[i] = numbers[i], numbers[begin]
backtrack(numbers, result, begin + 1)
numbers[begin], numbers[i] = numbers[i], numbers[begin]
def permute(numbers):
"""
生成给定数字列表的所有排列。
参数:
numbers -- 待排列的数字列表
返回:
所有可能的排列列表
"""
result = []
backtrack(numbers, result, 0)
return result
if __name__ == '__main__':
numbers = [6, 7, 9]
result = permute(numbers)
print(result)
评论前必须登录!
注册