尋寶
阿新 • • 發佈:2020-12-19
小明有一張藏寶圖,上面有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;
}