【51Nod】1083 矩阵取数问题
2017-05-18 10:39
323 查看
题意
一个N*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,从左上走到右下,只能向下向右走,求能够获得的最大价值。例如:3 * 3的方格。
1 3 3
2 1 3
2 2 1
能够获得的最大价值为:11。
解题思路
dp[i][j]:从左上走到第i行第j列能够获得的最大价值状态转移方程为:dp[i][j]=max(dp[i-1][j],dp[i][j-1])+a[i][j];
参考代码
#include <iostream> using namespace std; #define MAXN 500+2 int a[MAXN][MAXN],dp[MAXN][MAXN]; int main(){ int n; while (cin>>n){ for (int i=0;i<n;i++) for (int j=0;j<n;j++) cin>>a[i][j]; dp[0][0]=a[0][0]; for (int i=0;i<n;i++){ for (int j=0;j<n;j++){ if (i==0&&j==0) dp[i][j]=a[i][j]; if (i!=0&&j==0) dp[i][j]=dp[i-1][j]+a[i][j]; if (i==0&&j!=0) dp[i][j]=dp[i][j-1]+a[i][j]; if (i!=0&&j!=0) dp[i][j]=max(dp[i-1][j],dp[i][j-1])+a[i][j]; } } cout<<dp[n-1][n-1]<<endl; } return 0; }
相关文章推荐
- 51nod 1083 矩阵取数问题
- 51NOD 1083 矩阵取数问题
- 51Nod 1083 矩阵取数问题 (DP)
- 51nod 1083 矩阵取数问题 ( dp
- 51nod 1083 矩阵取数问题
- 51nod--1083 矩阵取数问题
- 51nod 1083 矩阵取数问题
- 51nod 1083 矩阵取数问题
- 【51Nod】-1083 矩阵取数问题(DP)
- 51nod 1083矩阵取数问题
- 1083 矩阵取数问题 分类: 51nod 2015-07-20 22:05 9人阅读 评
- 51nod 1083 矩阵取数问题
- 51Nod 1083 矩阵取数问题(矩阵取数dp,基础题)
- 51nod 1083 矩阵取数问题
- 【51Nod】1083 - 矩阵取数问题(dp)
- 51nod 1083 矩阵取数问题
- 51nod 1083 矩阵取数问题
- 51Nod 1083 矩阵取数问题 | 动态规划
- 51nod-1083 矩阵取数问题
- 51Nod 1083 矩阵取数问题