import sys
while 1:
try:
import copy
m, n = input().split(" ")
m = int(m)
n = int(n)
l = []
for _ in range(m):
s = list(map(int, input().split()))
l.append(s)
#深度赋值l,因为dfs函数会改变传入参数ll的值,所以用一个复制一个
l1= copy.deepcopy(l)
l2 =copy.deepcopy(l)
tmp=[]
for i in range(m):
for j in range(n):
if l[i][j]==2:
tmp.append([i,j])
res1 = [[0] * m for _ in range(n)]
res2 = [[0] * m for _ in range(n)]
px=[-1,0,1,0]
py=[0,-1,0,1]
def dfs(ll,res,i,j,flag):
for index in range(0,len(px)):
new_x=i+px[index]
new_y = j + py[index]
if new_x<m and new_x>=0 and new_y<n and new_y>=0 and ll[new_x][new_y]!=1 and not flag:
ll[new_x][new_y]=1
res[new_x][new_y]=1
dfs(ll,res,new_x,new_y,flag)
ll[new_x][new_y]=0
flag = False
dfs(l1,res1,tmp[0][0],tmp[0][1],flag)
flag = False
dfs(l2, res2, tmp[1][0], tmp[1][1], flag)
result=0
for i in range(m):
for j in range(n):
if l[i][j] == 3 and res1[i][j]==1 and res2[i][j]==1:
result+=1
print(result)
except:
break
欢乐的周末-笔试题解析
于 2022-08-27 20:19:24 首次发布