题解 | #滑雪#

滑雪

https://www.nowcoder.com/practice/36d613e0d7c84a9ba3af3ab0047a35e0

借鉴别的语言的大佬的代码写的python
def dfs(n, m, arr, dp, row, col):
    # up
    if row - 1 >= 0 and row - 1 < n and arr[row][col] > arr[row - 1][col]:
        dfs(n, m, arr, dp, row - 1, col)
        dp[row][col] = max(dp[row - 1][col] + 1, dp[row][col])
    # down
    if row + 1 >= 0 and row + 1 < n and arr[row][col] > arr[row + 1][col]:
        dfs(n, m, arr, dp, row + 1, col)
        dp[row][col] = max(dp[row + 1][col] + 1, dp[row][col])
    # left
    if col - 1 >= 0 and col - 1 < m and arr[row][col] > arr[row][col - 1]:
        dfs(n, m, arr, dp, row, col - 1)
        dp[row][col] = max(dp[row][col - 1] + 1, dp[row][col])
    # right
    if col + 1 >= 0 and col + 1 < m and arr[row][col] > arr[row][col + 1]:
        dfs(n, m, arr, dp, row, col + 1)
        dp[row][col] = max(dp[row][col + 1] + 1, dp[row][col])

def maxlen(arr, n, m):
    dp = [[1] * m for i in range(n)]
    mm = 1
    for i in range(n):
        for j in range(m):
            dfs(n, m, arr, dp, i, j)
            mm = max(mm, dp[i][j])
    return mm


# input
N, M = map(int, input().split())
hrr = list()
for i in range(N):
    hrr.append(list(map(int, input().split())))

print(maxlen(hrr, N, M))


全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务