尋寶 動態規劃 滾動陣列)

2021-10-12 07:04:14 字數 896 閱讀 3656

小明有一張藏寶圖,上面有m*n個房間,每個房間裡面都有乙個有一定價值的寶物,小明只能從左上角的房間進入收集寶物,且每次只能向右邊或向下邊的房間繼續尋寶,最終只能從最右下的房間出來。請你幫小明計算下他最多可以收集到多少價值的寶物?

輸入第一行給出兩個正整數m,n(1=輸出收集到的最大價值v,題目保證v<10^9。

4 4

1 18 9 3

7 10 6 12

5 13 4 15

2 11 8 16

78
#include#includeusing namespace std;

int main()

for(int i=1;i<=m;i++)

} //狀態轉移方程dp[i][j]=arr[i][j]+max(dp[i-1][j],dp[i][j-1])

//初始化「從上至下邊界」

dp[1][1] = arr[1][1];

for(int i=2;i<=m;i++)

for(int j=2;j<=n;j++)

//遞推

for(int i=2;i<=m;i++)

} cout<#includeusing namespace std;

int main()

for(int i=1;i<=m;i++)

} //狀態轉移方程dp[i][j]=arr[i][j]+max(dp[i-1][j],dp[i][j-1])

//初始化「從上至下邊界」

for(int j=1;j<=n;j++)

//遞推

for(int i=2;i<=m;i++)

} cout

}

《滾動陣列》 動態規劃思想

滾動陣列是dp中的一種程式設計思想。簡單的理解就是讓陣列滾動起來,每次都使用固定的幾個儲存空間,來達到壓縮,節省儲存空間的作用。起到優化空間,主要應用在遞推或動態規劃中 如01揹包問題 因為dp題目是乙個自底向上的擴充套件過程,我們常常需要用到的是連續的解,前面的解往往可以捨去。所以用滾動陣列優化是...

尋寶路線 動態規劃

else if i m 1 到達底端,就只能往右走 else if j n 1 到達右端,只能往下走 else 否則在這一點能夠獲得的最大價值就是該點的寶物價值加上往右或者往下走能夠獲得的最大價值 int s int i,int j else int main printf d dp 0,0 put...

《滾動陣列》 滾動陣列思想,運用在動態規劃當中

滾動陣列是dp中的一種程式設計思想。簡單的理解就是讓陣列滾動起來,每次都使用固定的幾個儲存空間,來達到壓縮,節省儲存空間的作用。起到優化空間,主要應用在遞推或動態規劃中 如01揹包問題 因為dp題目是乙個自底向上的擴充套件過程,我們常常需要用到的是連續的解,前面的解往往可以捨去。所以用滾動陣列優化是...