主要用Python和C++两种语言刷
地图
方向:
d = [(-1,0),(1,0),(0,-1),(0,1)]
BFS
def BFS(start):
if vis[start[0]][start[1]] == 1:
# 根据条件返回
size = 0 # 记录数量
que = [start] # 队列
# 可加判断条件
# 标记访问
vis[start[0]][start[1]] = 1
while que != []:
top = que.pop(0)
size += 1
for dir in d:
nx,ny = top[0]+dir[0],top[1]+dir[1]
# 越界或者其它条件,跳过
if nx<0 or nx>=n or ny<0 or ny>=m or 其它条见:
更改条见
continue
# 根据题目设置条件
if ...:
que.append((nx,ny))
vis[nx][ny] = 1 # 入队时标记访问
return size
DFS
def DFS(start):
if vis[start[0]][start[1]] == 1:
return
vis[start[0]][start[1]] = 1
for dir in d:
nx,ny = start[0]+dir[0],start[1]+dir[1]
# 根据题目设置其它条件
if nx<0 or nx>=n or ny<0 or ny>=m or 其它条件:
self.meet = True
continue
if ...:
DFS((nx,ny))