题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084

Problem Description
在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:
有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?
已经告诉你了,这是个DP的题目,你能AC吗?
Input
输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中第i行有个i个整数,且所有的整数均在区间[0,99]内。
Output
对于每个测试实例,输出可能得到的最大和,每个实例的输出占一行。
Sample Input
1
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
Sample Output
30
解题思路:这是一道动态规划的入门题目,比较简单。定义二维数组dp[i][j]的值保存该点到第n层的最大数字和。我们要做的就是通过比较dp[i+1][j]与dp[i+1][j+1]这两个谁大就取谁,让其与D[i][j]本身的权值相加即可。这样从下往上推,最后归于顶点。
状态转移方程为dp[i][j] = max(dp[i+1][j],dp[i+1][j+1])+D[i][j].
AC代码:
 #include<bits/stdc++.h>
using namespace std;
int main(){
int C,N,dp[][],D[][];//递推法,递归会超时
cin>>C;
while(C--){//测试实例的个数
cin>>N;//数塔的高度
memset(dp,,sizeof(dp));//清0
memset(D,,sizeof(D));
for(int i=;i<N;i++)
for(int j=;j<=i;j++)
cin>>D[i][j];//读入直角三角形数塔
for(int i=N-;i>=;i--)//从最低层往上递推
for(int j=;j<=i;j++)
dp[i][j]=max(dp[i+][j],dp[i+][j+])+D[i][j];//取下一层一个和它的右边一个最大的+当前的值
cout<<dp[][]<<endl;//输出最上层即为最大的数字和
}
return ;
}

题解报告:hdu 2084 数塔(递推dp)的更多相关文章

  1. HDU 2084 数塔 (动态规划DP)

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 题目分析:此题采用动态规划自底向上计算,如果我们要知道所走之和最大,那么最后一步肯定是走最后一排 ...

  2. HDU 2084 数塔 (水DP)

    题意:.... 析:从下往上算即可,水DP. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #incl ...

  3. hdu 2084 数塔(简单dp)

    题目 简单dp //简单的dp #include<stdio.h> #include<string.h> #include<algorithm> using nam ...

  4. hdu 2084 数塔 (简单dp)

    http://acm.hdu.edu.cn/showproblem.php?pid=2084 数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory L ...

  5. Re0:DP学习之路 数塔 HDU - 2084(基础递推)

    解法 首先是输入的问题,输入的时候还要注意每一层都有多少个 然后是怎么求解,一般求解首先要考虑顺序,是正序还是倒序 如果这个题是正序的话那么最终还需要将最后一行进行一次找max的运算 如果是倒序的话那 ...

  6. ACM 杭电HDU 2084 数塔 [解题报告]

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

  7. HDU 2084 数塔(动态规划)

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

  8. HDU 2084 数塔 (DP)

    数塔 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Pr ...

  9. HDU 2084 数塔(简单DP入门)

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

随机推荐

  1. SecureCRT5 中文乱码

    SecureCRT5 中文乱码 secureCRT7已经不用这样设置了: 学习了:http://www.iitshare.com/securecrt-chinese-garbled-solution. ...

  2. [Angular] Expose Angular Component Logic Using State Reducers

    A component author has no way of knowing which state changes a consumer will want to override, but s ...

  3. C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法

    C#构造方法(函数)   一.概括 1.通常创建一个对象的方法如图: 通过  Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...

  4. 通过通过url routing解决UIViewController跳转依赖

    XYRouter https://github.com/uxyheaven/XYRouter XYRouter是一个通过url routing来解决UIViewController跳转依赖的类. * ...

  5. 求出全部的正整数对 使他们最大公约数为n,最小公倍数为m

    题目大概是这种:cid=1021&pid=5http://" target="_blank">点击打开链接 大意就是 求出全部的正整数对 使他们最大公约数为 ...

  6. R.layout引用不了布局文件

    删除import android.R 引用包所在的R文件..

  7. Django's CSRF mechanism

    Forbidden (403) CSRF verification failed. Request aborted. You are seeing this message because this ...

  8. hdfs对namenode format 之后 应该首先检查内存消耗情况,以判断是否支持开启yarn

    http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-common/yarn-default.xml  3.0.0 yarn.sc ...

  9. idea导出配置

  10. js常用操作事件

    触发描述 方法 用法 点击 onclick="method();"   变换 onchange="testChange();"   双击 ondblclick= ...