地下城遊戲(dp)

2021-10-03 14:40:35 字數 860 閱讀 3949

題目:

題意:給定乙個矩陣,從(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 遊戲規則如下 騎士從左上角出發,每次只能向右或者向下走,最後到達右下角見到公主。地圖中每個位置的只代表騎士要遭遇的事。如果是負數,表示此處有怪獸,要讓騎士損失血量。如果是非負數,表示此處有血瓶,能讓...