一道例题:
给出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)