时间: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;}