HDU2084基础DP数塔

数塔

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

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

Source

2006/1/15
ACM程序设计期末考试

Recommend

lcy   |   We have carefully selected several similar
problems for you:  1176 1087 1159 1069 2602

#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int i,j,n,t,a[105][105],dp[105][105];
    cin>>t;
    while(t--)
    {
        memset(a,0,sizeof(a));
        memset(dp,0,sizeof(dp));
        cin>>n;
        for(i=0;i<n;i++)
        for(j=0;j<=i;j++)
        cin>>a[i][j];
        for(j=0;j<n;j++)
        dp[n-1][j]=a[n-1][j];
        for(i=n-2;i>=0;i--)
        for(j=0;j<=i;j++)
        dp[i][j]+=a[i][j]+max(dp[i+1][j],dp[i+1][j+1]);
        cout<<dp[0][0]<<endl;
    }
    return 0;
}
时间: 2024-11-16 22:41:04

HDU2084基础DP数塔的相关文章

hdu 1176 免费馅饼 (dp 数塔类型)

免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 25712    Accepted Submission(s): 8760 Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的1

hdu 1176 dp 数塔问题

哎,一开始没看到从5开始.... 后来写懵了,用了queue正推,记录能到达的节点,p[i+1][j] = max(p[i][j],max(p[i][j-1],p[i][j+1])) 嗯,用stl mle了,自己写queue又tle,不知道为什么嚒,好像bfs我从没a过... 看了dicuss的思路,只看到数塔两个字我就懂了... 只能说巧妙了,区间反向确定我确实没想到... //数塔问题 /* t=0 5 t=1 456 t=2 34567 t=3 2345678 t=4 123456789

HDU1176 DP 数塔

看了大牛的代码后恍然大悟,然后自己开始写,WA了一下午! 这里有两个坑,让我找了一下午! AC代码: #include <iostream>#include <stdio.h>#include <stdlib.h>#include<string.h>#include<iostream>#include<string.h>#include<algorithm>const int maxn = 100000+5;int dp[

HDU 1176免费馅饼 DP数塔问题转化

L - 免费馅饼 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1176 Appoint description:  prayerhgq  (2015-07-28) System Crawler  (2015-11-21) Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.

poj3176--Cow Bowling(dp:数塔问题)

Cow Bowling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14028   Accepted: 9302 Description The cows don't use actual bowling balls when they go bowling. They each take a number (in the range 0..99), though, and line up in a standard

hdoj1176 免费馅饼(dp 数塔)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176 思路: 这道题不复杂,很明显是个dp题,数据比较大,搜索应该会超时,想到如何初始化,注意细节就差不多了.定义dp数组,边输入边初始化,dp[i][j]表示第i秒j处的掉落馅饼个数.dp过程从最后一秒逆向进行更方便,过程中dp[i][j]表示逆向到第i秒j处得到馅饼的最大值.有个坑点:最后输入的一组数据的时间不一定是最后一秒,我在这wa了一发.详见代码: 1 #include<bits/stdc

HDU-2084 数塔 经典dp,水

1.HDU-2084   数塔 2.链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 3.总结:从下往上推,最后归于顶点.方程为  dp[i][j] = max(dp[i+1][j],dp[i+1][j+1])+a[i][j] #include<iostream> #include<cstring> #include<cmath> #include<queue> #include<algorithm&g

hdu----(2084)数塔(dp)

数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 22140    Accepted Submission(s): 13366 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?

hdu2084 数塔 (DP)

数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 34137    Accepted Submission(s): 20368 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少