遍历图,记录中间的计算结果,避免重复计算。
知识点:
- 深度优点搜索
- 记忆化搜索
n, m = map(int, input().split())
nums = []
for i in range(n):
nums.append(list(map(int, input().split())))
resMatrix = [[0] * m for _ in range(n)]
res = 1
wards = [[-1, 0], [1, 0], [0, -1], [0, 1]]
def dfs(i, j):
for x, y in wards:
x += i
y += j
if 0 <= x < n and 0 <= y < m and nums[x][y] < nums[i][j]:
if resMatrix[x][y] == 0:
dfs(x, y)
if resMatrix[x][y] > resMatrix[i][j]:
resMatrix[i][j] = resMatrix[x][y]
resMatrix[i][j] += 1
for i in range(n):
for j in range(m):
if resMatrix[i][j] == 0:
dfs(i, j)
if resMatrix[i][j] > res:
res = resMatrix[i][j]
print(res)