时间:2016-05-10 10:02:33 星期二
题目编号:[2016-05-10][51][]
题目大意:
- 一个N*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,从左上走到右下,只能向下向右走,求能够获得的最大价值。
分析:动态规划,dp
- dp[i][j] 表示到达 (i,j)处的最大值
- dp[i][j] = max(dp[i - 1][j] , dp[i][j - 1]) + a[i][j]
#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn = 5 * 1E2 + 10;
int a[maxn][maxn],dp[maxn][maxn];
int main(){
int n;
scanf("%d",&n);
for(int i = 1 ; i <= n ; ++i){
for(int j = 1 ; j <= n ; ++j){
scanf("%d",&a[i][j]);
}
}
for(int i = 1 ; i <= n ; ++i){
for(int j = 1 ; j <= n ; ++j){
dp[i][j] = max(dp[i - 1][j],dp[i][j - 1]) + a[i][j];
}
}
printf("%d\n",dp[n][n]);
return 0;
}