題目:
題意:給定乙個矩陣,從(0,0)走到(n-1,m-1),每次只能向下和向右走,要求在過程中血量必須保持正值。求最低初始血量。
題解:這是最小值最大化問題。正向不好遞推,考慮逆向。令dp[
i][j
]dp[i][j]
dp[i][
j]表示走到該點時需要的最小血量。如果其相鄰點都為負數,代表往後走需要額外消耗,取最小消耗,加上自己的點值;如果相鄰點存在正值,說明往後走不需要額外消耗,只需考慮自己的點值即可。
class
solution
dp[i]
[j]= int_min;
if(i < n-
1) dp[i]
[j]=
max(dp[i]
[j],dp[i+1]
[j]);if
(j < m-
1) dp[i]
[j]=
max(dp[i]
[j],dp[i]
[j+1])
;if(dp[i]
[j]>
0) dp[i]
[j]= dungeon[i]
[j];
else dp[i]
[j]+
= dungeon[i]
[j];}}
// for(int i = 0 ;i < n;i++)
// printf("\n");
// }
if(dp[0]
[0]>0)
return1;
return
-dp[0]
[0]+
1;}}
;
龍與地下城遊戲問題
題目 給定乙個二維陣列,含義是一張地圖,例如,如下矩陣 int data 遊戲規則如下 1.騎士從左上角出發,每次只能向下或向右走,最後達到右下角見到公主。2.地圖中每個位置代表騎士血量的變化,若為負數,則表示有怪獸掉血 若為整數,則表示有血包,增加了血量 3.騎士走到任何乙個位置,血量都不能少於1...
龍與地下城遊戲問題
題目 給定乙個二維陣列map,含義是一張地圖,例如,如下矩陣 2 3 3 5 10 1 0 30 5 遊戲的規則如下 騎士從左上角出發,每次只能向右或向下走,最後到達右下角見到公主。地圖中每個位置的值代表騎士要遭遇的事情。如果是負數,說明此處有怪獸,要讓騎士損失血量。如果是非負數,代表此處有血瓶,能...
龍與地下城遊戲問題
題目 給定乙個二維陣列map,含義是一張地圖,例如如下,矩陣 2 3 3 5 10 1 0 30 5 遊戲規則如下 騎士從左上角出發,每次只能向右或者向下走,最後到達右下角見到公主。地圖中每個位置的只代表騎士要遭遇的事。如果是負數,表示此處有怪獸,要讓騎士損失血量。如果是非負數,表示此處有血瓶,能讓...