网易笔试第四题的思路是什么呀?
求二维矩阵中离1最近的0,我是这么写的判断距离的函数
def distance(arr,i,j): if i<0 or i>=len(arr) or j<0 or j>=len(arr[0]): return 0 if arr[i][j] == 0: return 0 else: return 1+min(distance(arr,i-1,j),distance(arr,i+1,j),distance(arr,i,j-1),distance(arr,i,j+1))
结果运行的时候报越界,整体代码如下:
def init_2d(m,n):
d = []
for i in range(m):
d.append([])
for j in range(n):
d[i].append(0)
return d
def distance(arr,i,j):
if i<0 or i>=len(arr) or j<0 or j>=len(arr[0]):
return 0
if arr[i][j] == 0:
return 0
else:
return 1+min(distance(arr,i-1,j),distance(arr,i+1,j),distance(arr,i,j-1),distance(arr,i,j+1))
line1 = input().split(" ")
m,n = int(line1[0]),int(line1[1])
d = init_2d(m,n)
for i in range(m):
line = input()
for j,s in enumerate(line):
d[i][j] = int(s)
# print(distance(d,0,2))
# print(d)
arr1 = init_2d(m,n)
for i in range(m):
for j in range(n):
arr1[i][j] = distance(d,i,j)
print(arr1)

