0
点赞
收藏
分享

微信扫一扫

深度搜索(DFS)算法python基础题

有点d伤 2022-04-28 阅读 81

 代码:

n=int(input())
path=[0]*n#此列表用于存放答案
p=[False]*(n+1)#p列表是表示还未遍历的点,现在是将其初始化为False,(n+1)是防止越界,如果为n的话p[n]就会报错。
def dfs(u):
    if u==n:#当如果为n的时候说明n个数都枚举完了,所以将其输出。
        print(*path)
    for i in range(1,n+1):#枚举数,应从1开始
        if p[i]==False:#如果该数未被枚举就将存储在path中。
            path[u]=i
            p[i]=True#因为已经将i存放在path中了,所以已经枚举过了,所以设置为true。
            dfs(u+1)#递归下一个数
            p[i]=False#当递归后应将原来位置设置为False,便于下一次递归,就是回溯
dfs(0)
举报

相关推荐

0 条评论