首页 > 其他 > 详细

HDU2391 Filthy Rich【数塔DP】

时间:2015-03-30 13:23:31      阅读:144      评论:0      收藏:0      [点我收藏+]

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=2391


题目大意:

在一个N*M的矩阵中,不同的位置上有不同重量的黄金,从矩阵的左上角开始,只能向右

或是向下走,问:从左上角走到右下角最多能获得多少黄金。


思路:

简单的数塔DP,状态转移方程:dp[j] = max(dp[j-1],dp[j])+ Map[i][j]。


AC代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;

int Map[1100][1100],dp[1100],N,M;

int main()
{
    int T,kase = 0;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&N,&M);
        for(int i = 1; i <= N; ++i)
        {
            for(int j = 1; j <= M; ++j)
            {
                scanf("%d",&Map[i][j]);
            }
        }

        for(int i = 1; i <= N; ++i)
        {
            for(int j = 1; j <= M; ++j)
            {
                if(i == 1)
                    dp[j] = dp[j-1] + Map[i][j];
                else
                    dp[j] = max(dp[j-1],dp[j])+ Map[i][j];
            }
        }
        printf("Scenario #%d:\n",++kase);
        printf("%d\n\n",dp[M]);
    }

    return 0;
}


HDU2391 Filthy Rich【数塔DP】

原文:http://blog.csdn.net/lianai911/article/details/44748671

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!