from collections import deque
n = int(input())
x,y = map(int,input().split())
grid = []
visited=[[False] * n for i in range(n)]
for i in range(n):
grid.append(list(map(int,input().split())))
q = deque([(x,y)])
visited[x][y] = True
d = [(0,1),(0,-1),(1,0),(-1,0)]
ct = 1
while q:
r,c = q.popleft()
for dr,dc in d:
nr = dr + r
nc = dc + c
if 0 <= nr < n and 0 <= nc < n and visited[nr][nc] == False and abs(grid[nr][nc] - grid[r][c]) <= 2:
q.append((nr,nc))
visited[nr][nc] = True
ct+=1
print(ct)
from collections import deque
n = int(input())
x,y = map(int,input().split())
grid = []
visited=[[False] * n for i in range(n)]
for i in range(n):
grid.append(list(map(int,input().split())))
q = deque([(x,y)])
visited[x][y] = True
d = [(0,1),(0,-1),(1,0),(-1,0)]
ct = 1
while q:
r,c = q.popleft()
for dr,dc in d:
nr = dr + r
nc = dc + c
if 0 <= nr < n and 0 <= nc < n and visited[nr][nc] == False and abs(grid[nr][nc] - grid[r][c]) <= 2:
q.append((nr,nc))
visited[nr][nc] = True
ct+=1
print(ct)
給你看My code
減少記憶體有兩個方向
1.將拜訪過紀錄直接存在原二維陣列,少開一個visited
2.使用array.array取代傳統list,用法可以問AI