1. 程式人生 > 其它 >尋寶

尋寶

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

輸入第一行給出兩個正整數m,n(1=<m,n<=2000),隨後給出m行資料,每行都包括n個正整數,中間用空格分割。
輸出格式:

輸出收集到的最大價值v,題目保證v<10^9。
輸入樣例:

4 4
1 18 9 3
7 10 6 12
5 13 4 15
2 11 8 16

輸出樣例:

78

#include <iostream>
#include
<algorithm>
using namespace std; int a[2000][2000],dp[3][2000]; int main() { int x, y; cin >> x>>y; for (int i = 1; i <= x; i++) for (int j = 1; j <= y; j++) cin >> a[i][j]; for (int i = 1; i <= x; i++){ for (int j = 1; j <= y; j++){ dp[i % 2][j] = max(dp[(i -
1) % 2][j], dp[i % 2][j - 1]) + a[i][j]; } } cout << dp[x % 2][y] << endl; return 0; }