当前位置:   article > 正文

901. 滑雪_c++一个人滑雪,他的移动可以用一串字符来表示

c++一个人滑雪,他的移动可以用一串字符来表示

Powered by:NEFU AB-IN

Link

901. 滑雪

  • 题意

    img

  • 思路

    img

    其实就是 d f s dfs dfs+记忆化,每次爆搜的时候,能利用之前的状态

  • 代码

    '''
    Author: NEFU AB-IN
    Date: 2022-03-14 09:29:17
    FilePath: \ACM\Acwing\901.py
    LastEditTime: 2022-03-14 17:06:34
    '''
    N = 320
    f = [[-1] * N for _ in range(N)] #先把每个状态初始化为-1,表示状态未被算过
    g = [[0] * N for _ in range(N)]
    
    
    def dp(x, y):
        if f[x][y] != -1:
            return f[x][y]
    
        f[x][y] = 1 # 最少就只走当前的格子
    
        for i in range(4):
            a = x + dx[i]
            b = y + dy[i]
            if a >= 1 and a <= r and b >= 1 and b <= c and g[x][y] > g[a][b]:
                f[x][y] = max(f[x][y], dp(a, b) + 1)
        return f[x][y]
    
    
    r, c = map(int, input().split())
    
    for i in range(1, r + 1):
        g[i][1:] = list(map(int, input().split()))
    
    dx = [-1, 0, 1, 0]
    dy = [0, 1, 0, -1]
    res = 1
    
    for i in range(1, r + 1):
        for j in range(1, c + 1):
            res = max(res, dp(i, j))
    
    print(res)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/1003373
推荐阅读
相关标签
  

闽ICP备14008679号