关于python DFS的思考

一道例题:

 给出dfs模板:

import sys
sys.setrecursionlimit(10000)
def dfs(x,y):
    global num
    dir=[(-1,0),(0,-1),(1,0),(0,1)]
    for i in range(4):    
        nx,ny=x+dir[i][0],y+dir[i][1]
        if x<0 or x>=n or y<0 or y>=n:
            continue
        if 某条件:
            num+=1
            continue
        if 某条件:
            dfs(某)
num=0
输入
dfs(某)

给出代码:

#设置递归深度
import sys
sys.setrecursionlimit(30000)
def dfs(x,y):
    global num
    dir = [(-1, 0), (0 ,-1), (1, 0), (0, 1)]  # 左上右下
    for i in range(4):
        newx,newy=x+dir[i][0],y+dir[i][1]
        if newx<0 or newx>=n or newy<0 or newy>=m:
            continue
        if a_m[newx][newy]=="*":
            num+=1
            print("%d:%s->%d%d"%(num,mp[x][y],newx,newy))
            continue
        if a_m[newx][newy]==".":
            a_m[newx][newy]="#"
            mp[newx][newy]=mp[x][y]+"->"+str(newx)+str(newy)
            dfs(newx,newy)
            a_m[newx][newy]="."
n,m=map(int,input().split())
a=[list(input()) for _ in range(n)]#初始输入数组
num=0
a_m=[[""]*10 for i in range(10)]
mp=[[""]*10 for i in range(10)]#路径记录数组
x1,y1,x2,y2=0,0,0,0
for i in range(n):
    for j in range(m):
        a_m[i][j]=a[i][j]
        if a[i][j]=="@":
            x1,y1=i,j
        if a[i][j]=="*":
            x2,y2=i,j
print("from %d%d to %d%d"%(x1,y1,x2,y2))
mp[x1][y1]=str(x1)+str(y1)
dfs(x1,y1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值