174. Dungeon Game
https://leetcode.com/problems/dungeon-game/description/
给定二维矩阵,起点为左上角,每步可往下和右走,根据格子的值会相应扣血或回血,问活着(hp>=1)从左上角走到右下角hp初始值至少是多少。action为从上或左选个格子跳转过来,要求到达终点时hp也至少为1,限制来自于终点而不是起点,所以从终点开始写状态转移直到起点。dp[i][j]表示从(i, j)出发时保证活着到"终点"的最小hp。扣血相当于要更多的初始hp,回血需要少的hp,因此dp[i,j] = min(dp[i+1,j], dp[i, j -1]) 减去dungeon[i,j]。又因为题目要求到达每个格子hp至少为1,dp[i][j] = max(1, 上一个状态- dungeon(i, j))。
思路参考了花花的。
Last updated
Was this helpful?