DFS试炼之排列数字 python
时间: 2023-08-24 22:12:56 浏览: 57
当需要对一组数字进行排列时,可以使用深度优先搜索(DFS)算法来解决。下面是一个使用Python实现的排列数字的示例代码:
```python
def permute(nums):
def dfs(nums, path, res):
# 当所有数字都选取完毕,将当前路径添加到结果列表中
if not nums:
res.append(path)
# 遍历可选的数字
for i in range(len(nums)):
# 选择当前数字,并将其从剩余数字中移除
dfs(nums[:i] + nums[i+1:], path + [nums[i]], res)
res = []
dfs(nums, [], res)
return res
# 示例用法
nums = [1, 2, 3]
result = permute(nums)
print(result)
```
在这个示例中,我们定义了一个嵌套函数`dfs`来执行深度优先搜索。`dfs`函数的参数包括当前可选数字`nums`、当前已选数字的路径`path`以及结果列表`res`。
在每一次递归调用中,我们从剩余的数字中选择一个数字,并将其添加到路径中。然后,我们通过递归调用`dfs`函数继续搜索剩余的数字。当没有剩余数字可选时,将当前路径添加到结果列表中。
最后,我们可以使用示例数据`nums = [1, 2, 3]`来测试这个函数,并打印输出结果。输出结果为`[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]`,表示给定数字的所有排列组合。