题解 | #龙与地下城游戏问题#

龙与地下城游戏问题

http://www.nowcoder.com/practice/c0ca4c9e65144af69ada03febaa0e33a

n, m = map(int, input().split())
matrix = []
for _ in range(n):
    matrix.append(list(map(int, input().split())))
dp = [0] * m
dp[-1] = 1 if matrix[-1][-1] > 0 else -matrix[-1][-1] + 1
for i in range(m - 2, -1, -1):
    dp[i] = max(dp[i + 1] - matrix[-1][i], 1)
for i in range(n - 2, -1, -1):
    dp[-1] = max(dp[-1] - matrix[i][-1], 1)
    for j in range(m - 2, -1, -1):
        right = max(dp[j + 1] - matrix[i][j], 1)
        down = max(dp[j] - matrix[i][j], 1)
        dp[j] = min(right, down)
print(dp[0])
全部评论

相关推荐

自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务