• hdu 2084 数塔


    数塔

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


    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
     
    Recommend
    lcy   |   We have carefully selected several similar problems for you:  1087 1069 1058 2571 2159 
     

    题目中已明确说明此题为dp,一道很基础的dp,第一次独立写dp,确立思路从下往上推的思路。

    从最底层向上推,寻找下一行大的数加上,直到推到塔顶,注意端点问题。

    题意:都为中文,很好理解。

    附上代码:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 using namespace std;
     5 int dp[105][105];
     6 int main()
     7 {
     8     int m,n,i,j;
     9     scanf("%d",&n);
    10     while(n--)
    11     {
    12         scanf("%d",&m);
    13         memset(dp,0,sizeof(dp));  //将dp数组全部初始化为0
    14         for(i=1; i<=m; i++)
    15             for(j=1; j<=i; j++)
    16                 scanf("%d",&dp[i][j]);  //输入数据,第i行有i个数据
    17         for(i=m; i>=1; i--)
    18         {
    19             for(j=1; j<=i; j++)
    20             {
    21                 if(dp[i][j]>dp[i][j+1])  //找下一行相邻的大的那个数加上
    22                     dp[i-1][j]+=dp[i][j];
    23                 else
    24                     dp[i-1][j]+=dp[i][j+1];
    25             }
    26         }
    27         printf("%d
    ",dp[1][1]);   //输出塔顶数,此为数塔的最大和
    28     }
    29     return 0;
    30 }
  • 相关阅读:
    2021,6,10 xjzx 模拟考试
    平衡树(二)——Treap
    AtCoder Beginner Contest 204 A-E简要题解
    POJ 2311 Cutting Game 题解
    Codeforces 990G GCD Counting 题解
    NOI2021 SDPTT D2T1 我已经完全理解了 DFS 序线段树 题解
    第三届山东省青少年创意编程与智能设计大赛总结
    Luogu P6042 「ACOI2020」学园祭 题解
    联合省选2021 游记
    Codeforces 1498E Two Houses 题解 —— 如何用结论吊打标算
  • 原文地址:https://www.cnblogs.com/pshw/p/4752345.html
Copyright © 2020-2023  润新知