簡單DP 矩陣取數問題

2021-07-10 22:36:51 字數 738 閱讀 6766

乙個n*n矩陣中有不同的正整數,經過這個格仔,就能獲得相應價值的獎勵,從左上走到右下,只能向下向右走,求能夠獲得的最大價值。

例如:3 * 3的方格。

1 3 3

2 1 3

2 2 1

能夠獲得的最大價值為:11。

input

第1行:n,n為矩陣的大小。(2 <= n <= 500)

第2 - n + 1行:每行n個數,中間用空格隔開,對應格仔中獎勵的價值。(1 <= n[i] <= 10000)

output

輸出能夠獲得的最大價值。
input示例

3

1 3 3

2 1 3

2 2 1

output示例

11

題中要求只能向下或者向右直到走到右下角;

那麼移動狀態有兩種 (x+1 , y ) 和 (x,y+1);

且選擇移動是 比較max( (x+1,y) , (x,y+1) ) ; 後加上 map[max] ;

ac**:

#include using namespace std ;

int dp[510][510];

int ma[510][510];

int main()

} dp[1][1]=ma[1][1];

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

} cout<

dp 更難的矩陣取數問題

題目 乙個m n矩陣中有不同的正整數,經過這個格仔,就能獲得相應價值的獎勵,先從左上走到右下,再從右下走到左上。第1遍時只能向下和向右走,第2遍時只能向上和向左走。兩次如果經過同乙個格仔,則該格仔的獎勵只計算一次,求能夠獲得的最大價值。例如 3 3的方格。1 3 3 2 1 3 2 2 1 能夠獲得...

51nod1083 矩陣取數問題 簡單dp

乙個n n矩陣中有不同的正整數,經過這個格仔,就能獲得相應價值的獎勵,從左上走到右下,只能向下向右走,求能夠獲得的最大價值。例如 3 3的方格。1 3 3 2 1 3 2 2 1 能夠獲得的最大價值為 11。input 第1行 n,n為矩陣的大小。2 n 500 第2 n 1行 每行n個數,中間用空...

多路dp 更難的矩陣取數問題

解題關鍵 1 注意i和j的最大取值都是n,k是i與j的和。2 空間卡的很緊,多一位都不行。轉移方程 dp max a a 通過觀察,可以消去乙個變數,從而 dp k 1 max a a 然後再將相同的處理掉即可 1 include2 using namespace std 3 typedef lon...