HDU2391 Filthy Rich【数塔DP】

题目链接:

?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];elsedp[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】

相关文章:

你感兴趣的文章:

标签云: