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

龙与地下城游戏问题

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

import sys

lines = []
for line in sys.stdin:
    a = line.split()
    lines.append(a)

m = int(lines[0][1])
n = int(lines[0][0])
DP = [[0 for _ in range(n)] for _ in range(m)]
DP[m-1][n-1] = max(-int(lines[m][n-1]) + 1, 1)  # 血量不能少于1
for i in range(1, m+n-1):
    for j in range(i+1):
        if j <= m-1 and (i-j) <= n-1:
            row = (m-1) - j
            column = (n-1) - (i-j)
            if row == m - 1:
                DP[row][column] = max(DP[row][column+1] - int(lines[row+1][column]), 1)  # 血量不能少于1
            elif column == n - 1:
                DP[row][column] = max(DP[row+1][column] - int(lines[row+1][column]), 1)  # 血量不能少于1
            else:
                down = max(DP[row+1][column] - int(lines[row+1][column]), 1)  # 血量不能少于1
                right = max(DP[row][column+1] - int(lines[row+1][column]), 1)  # 血量不能少于1
                DP[row][column] = min(down, right)  # 初始血量至少是多少,所以用min

print(DP[0][0])

全部评论

相关推荐

真烦好烦真烦:牛友太有实力了
点赞 评论 收藏
分享
05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务