动态规划--矩阵取数问题

题源:51nod 1083

题意:给一个矩阵,只能从右边或者是从下走,求从左上角走到右下角的最大值。我第一次写用dp[i][j] += max(dp[i+1][j],dp[i][j+1]),一直wa难受,后面反应过来,改成了dp[i][j] += max(dp[i+1][j],dp[i][j]),果然还是太菜了。。

代码:

#include <iostream>
#include <cstdio>
#include <string>
#include <string.h>
#include <math.h>
using namespace std;
typedef long long ll;
const int maxn = 1010;
int dp[maxn][maxn];
int s = 0;

int main()
{
    int t;
    cin >> t;
    memset(dp,0,sizeof(dp));
    for(int i = 1;i <= t;++i) {
        for(int j = 1;j <= t;++j) {
            cin >> dp[i][j];
        }
    }
    for(int i = 1;i <= t;++i){
        for(int j = 1;j <= t;++j){
            dp[i][j] += max(dp[i-1][j],dp[i][j-1]);
        }
    }
    cout << dp[t][t] << endl;
    return 0;
 } 

 

posted @ 2018-10-04 17:41  岁岁长安  阅读(117)  评论(0编辑  收藏  举报
//一下两个链接最好自己保存下来,再上传到自己的博客园的“文件”选项中