题目思路:
从右下到左上进行动态规划。逆向计算经过每一个格子至少需要的生命值。
def loving(n,m,s):qishi=1i=n-1j=m-1dp=[[0 for i in range(3)] for j in range(3)]print(dp)dp[i][j]=max(1,1-s[i][j])j-=1while j>=0:dp[i][j]=max(1,dp[i][j+1]-s[i][j])j-=1j=m-1i-=1while i>=0:dp[i][j]=max(1,dp[i+1][j]-s[i][j])i-=1i=n-2j=m-2print(dp)for x in range(i,-1,-1):for y in range(j,-1,-1):dp_min=min(dp[x+1][y],dp[x][y+1])dp[x][y]=max(1,dp_min-s[x][y])return dp[0][0]
n=3
m=3
s=[[-2,-3,3],[-5,-10,1],[10,30,-5]]
s=loving(n,m,s)
print(s)
本文发布于:2024-02-01 21:34:55,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170679449739557.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |