深度优先算法
lst = [[1, 1, 3],
[2, 3, 4],
[1, 0, 1]]
m = 3 # 行
n = 3 # 列
def dfs(i, j, val):
if i < 0 or i == m:
return 0 # 行越界
elif j < 0 or j == n:
return 0 # 列越界
elif lst[i][j] >= val:
return 0 # 不是递减
elif (i, j) in dt:
return dt[(i, j)]
else:
res1 = 1
res1 = max(res1, 1 + dfs(i - 1, j, lst[i][j])) # 向上
res1 = max(res1, 1 + dfs(i + 1, j, lst[i][j])) # 向下
res1 = max(res1, 1 + dfs(i, j - 1, lst[i][j])) # 向左
res1 = max(res1, 1 + dfs(i, j + 1, lst[i][j])) # 向右
dt[(i, j)] = res1
return res1
dt = {}
for x in range(m):
for y in range(n):
res = dfs(x, y, 100)
print(res, end=' ')
print()
print(dt)