回溯——全排列(python)

张开发
2026/4/12 12:12:07 15 分钟阅读

分享文章

回溯——全排列(python)
思路DFS深度遍历到最底层到递归最底层时收集答案然后回溯到上一层再搜索没有访问的节点。注意使用visit数组标记访问过的数字。递归之后记得回溯from typing import List def permute(n)-List[List[int]]: res[] visit[0]*n path[] nums[] for i in range(n): #先创建数组 nums.append(i1) def dfs(pos): nonlocal res,path,visit if posn: #到达最后一个位置收集答案 res.append(path[:]) return for i in range(n): if visit[i]0: #表示该数字还未访问 path.append(nums[i]) visit[i]1 dfs(pos1) #继续递归填下一个位置 path.pop() #回溯 visit[i]0 dfs(0) #准备去填第0个空位 print(res) return res def main(): nint(input()) permute(n) if __name____main__: main()

更多文章