数塔

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 51530    Accepted Submission(s): 30346

Problem Description
在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:

有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?

已经告诉你了,这是个DP的题目,你能AC吗?

Input
输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中第i行有个i个整数,且所有的整数均在区间[0,99]内。
Output
对于每个测试实例,输出可能得到的最大和,每个实例的输出占一行。
Sample Input
1573 88 1 0 2 7 4 44 5 2 6 5
Sample Output
30
Source
2006/1/15 ACM程序设计期末考试

问题链接:HDU2084 数塔

问题简述:(略)

问题分析:(略)

程序说明

动态规划问题,有两种解法。

方法一:

不使用额外数组,从顶向下计算。

方法二:

使用额外数组,从底向上计算。需要注意数组大小!要多一行和一列保证可靠。

题记:(略)

参考链接:(略)

AC的C++语言程序如下:

/* HDU2084 数塔 */#include <iostream>
#include <string.h>using namespace std;const int N = 100;
int a[N + 1][N + 1], dp[N + 1][N + 1];int main()
{int t, n;cin >> t;while(t--) {cin >> n;for(int i=0; i<n; i++)for(int j=0; j<=i; j++)cin >> a[i][j];memset(dp, 0, sizeof(dp));for(int i=n-1; i>=0; i--)for(int j=0; j<=i; j++)dp[i][j] = max(dp[i+1][j],dp[i+1][j+1]) + a[i][j];cout << dp[0][0] << endl;}return 0;
}

AC的C++语言程序(方法一)如下:

/* HDU2084 数塔 */#include <iostream>
#include <string.h>using namespace std;const int N = 100;
int grid[N][N];int setmax(int n)
{for(int i=1; i<n; i++)for(int j=0; j<=i; j++)if(j == 0)grid[i][j] += grid[i-1][j];elsegrid[i][j] = max(grid[i][j] + grid[i-1][j-1], grid[i][j] + grid[i-1][j]);int maxv = 0;for(int i=n-1, j=0; j<n; j++)if(grid[i][j] > maxv)maxv = grid[i][j];return maxv;
}int main()
{int t, n;cin >> t;while(t--) {memset(grid, 0, sizeof(grid));cin >> n;for(int i=0; i<n; i++) {for(int j=0; j<=i; j++)cin >> grid[i][j];}int max = setmax(n);cout << max << endl;}return 0;
}

HDU2084 数塔【DP】相关推荐

  1. HDU-2084 数塔 经典dp,水

    1.HDU-2084   数塔 2.链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 3.总结:从下往上推,最后归于顶点.方程为  dp[i][j] ...

  2. HDU 2084 数塔(DP)(JAVA版)

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  3. HDU 2084 数塔 DP

    http://acm.hdu.edu.cn/showproblem.php?pid=2084 题目: 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走 ...

  4. HD 2048 数塔 DP(简单递推)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这 ...

  5. 1071: 数塔 (动态规划)

    题目描述 PIPI在CSU的某个角落发现了一座金字塔,而且这座金字塔是由数字组成的(如下图所示),现在PIPI想到塔顶去看看,它可以从底层任意一个数字出发逐层爬上去.PIPI每次可以爬至上一层相邻的数 ...

  6. HDU -- 2084 数塔(简单DP)

    HDU -- 2084  数塔 题意: 自上而下,选择一条累计和最大的路径 分析: 顶点只与左右两个子节点相关,且子节点路径的选择与顶点无关(无后效性) 状态dp[i][j]:表示(i,j)点向下得到 ...

  7. hdu 1176 dp 数塔问题

    哎,一开始没看到从5开始.... 后来写懵了,用了queue正推,记录能到达的节点,p[i+1][j] = max(p[i][j],max(p[i][j-1],p[i][j+1])) 嗯,用stl m ...

  8. 数塔(HDU-2084)

    Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大 ...

  9. 动态规划——数塔(hdu2084)

    首先介绍一下动态规划: 动态规划(dynamic programming),我们称之为DP,是求最优解的一种很常见的方法. 思想和背包基本一样,如对背包感兴趣的可以移步 http://blog.csd ...

最新文章

  1. FPGA的设计艺术(16)逻辑设计中无刻不在的判断之if/case语句
  2. 10.QML Qt Quick Controls 2之imagine style
  3. LambdaMART简介——基于Ranklib源码(二 Regression Tree训练)
  4. python数据分析_上海交大学姐带你10分钟学会Python数据分析_python_教育
  5. python:pytest优秀博客
  6. java面试题34下面关于程序编译说法正确的是()
  7. 读取文件卡顿_奥睿科IV300固态硬盘评测:35克,读取超900M/s?
  8. linux 自动ping脚本,ping自动报警shell脚本forlinux
  9. 大华服务器系统配置图,大华磁盘阵列配置说明指南.doc
  10. 开发技巧 | Python极简实现滑动平均滤波(基于Numpy.convolve)
  11. ASTC纹理压缩格式(Adaptive Scalable Texture Compression)
  12. 计算机毕业设计-基于springboot的社区志愿者管理系统
  13. 利用matlab求解常数e,利用matlab软件求解常数e和欧拉常数γ.docx
  14. 优秀程序员的博客有哪些?(2021 年 3 月版)
  15. CSS3 - @keyframes
  16. 年仅28岁的程序员宣布从字节跳动退休,他是如何实现财务自由的?
  17. 思维工具1: SCAMPER
  18. forward完美转发
  19. 0428-项目再开发2.0
  20. 宝塔开放php openssl,宝塔面板安装第三方插件 Encryption365™ SSL 证书宝塔客户端 – 可以申请IP证书...

热门文章

  1. 前端JAVASCRIPT模块化开发
  2. MongoDB的Go语言驱动----mgo的使用指南
  3. 鼓励玩家自创,大量的UGC能为手游续命吗?
  4. AS3的事件模型 .
  5. 微信 小程序 python 渲染_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...
  6. 理解AOP思想(面向切面编程)
  7. oracle如何获取日期月份差,Oracle获取日期和月份
  8. pyinstaller cx_oracle,使用pyinstaller打包使用cx_Oracle模块的程序出现The specified module could not be found的问题...
  9. 嵌入式论文3000字_普通期刊发表论文费用是多少
  10. 黑客Alex Tapanaris与PDF文档