美文网首页
数塔(DP)hdu2084

数塔(DP)hdu2084

作者: 吵架之王 | 来源:发表于2019-07-25 20:56 被阅读0次

在讲述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]表示到这个结点为止的最大和,其中i,j分别表示横纵坐标,为保证i-1不会越界,这里从1开始读入数组:

for(int i=1;i<=N;i++)cin>>a[i][j];

状态转移方程:

dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+a[i][j];

从上到下对每个结点进行状态转移:

for(int i=1;i<=N;i++)

 for(int j=1;i<=i;j++)

 dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+a[i][j];

最后,遍历最后一行,找到最大的数字和:


for(int j=1;i<=n;j++)

 maxx=max(maxx,dp[n][j]);

完整代码:

#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
int a[105][105],dp[105][105];
int main()
{
    int c,n,maxx;
    cin>>c;
    while(c--)
    {
        memset(dp,0,sizeof(dp));
        maxx=0;
        cin>>n;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=i;j++) cin>>a[i][j];
        for(int i=1;i<=n;i++)
            for(int j=1;j<=i;j++)
                dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+a[i][j];
        for(int j=1;j<=n;j++)
            maxx=max(maxx,dp[n][j]);
        cout<<maxx<<endl;
    }
    return 0;
}

相关文章

  • 数塔(DP)hdu2084

    在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步...

  • HDU 2084 数塔DP

    解题思路:从最顶层或者最底层出发,推到最底层或者最顶层,然后找出其中那条路线的值最大 我才用的是从下往上,代码如下

  • 【每周一题】2017.3.20 HDU2084 解题报告

    题目描述 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层...

  • 简单的DP算法--数塔

    在进行动态规划的时候需要注意:1、求出状态转移方程。2、要避免出现低效率的递归。可以用数组进行保存,实现记忆化查找...

  • DP-转移方程

    搞个算法笔记dp的总结,晴神tql了8!!!! 数塔 dp[i][j]为从第i行第j个数字出发的到达最底层的所有路...

  • CUC-SUMMER-5-A

    A - 数塔 HDU - 2084 已经告诉你了,这是个DP的题目,你能AC吗? Input输入数据首先包括一个整...

  • Leetcode.279.Perfect Squares

    题目 找到一个数最少由多少个完美数组成。完美数:n²。 思路 要么递归,要么DP。明显DP是一个不错的选择。dp[...

  • 数 1 -dp

    给出一个 非负 整数 num,对所有满足 0 ≤ i ≤ num 条件的数字 i 均需要计算其二进制表示中数字 1...

  • 签到题 DP

    DP算法,经典,求解 如图所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是...

  • 动态规划

    dp可以解决的问题 (1)最值(2)方案数 (3)可行性dp的方向性 :坐标型动态规划,前缀型动态规划dp[坐标...

网友评论

      本文标题:数塔(DP)hdu2084

      本文链接:https://www.haomeiwen.com/subject/ulbkrctx.html