4979 数塔

4979 数塔

时间限制: 1 s

空间限制: 32000 KB

题目等级 : 黄金 Gold

题解

题目描述 Description

有如图数塔,从顶部出发,在每一节点选择向左走或向右走,一直走到底。要求找到一个路径,使路径总和最大。

13

11       8

12       7      26

6      14      15      8

12      7      13      24     11

输入描述 Input Description

第一行输入一正整数n

接下来从第2行到第n+1行每行输入行数减1个正整数m。

输出描述 Output Description

共两行

第一行输出最大总和;

第二行输出最大路径,用‘-’隔开;

样例输入 Sample Input

5

13

11   8

12   7  26

6  14  15   8

12   7  13  24  11

样例输出 Sample Output

86

13-8-26-15-24

数据范围及提示 Data Size & Hint

40%数据:n<=20 , m<=1000

60%数据:n<=60 , m<=1050

分类标签 Tags 点此展开

暂无标签

题解:

数字三角形+输出路径

AC代码:

#include<cstdio>
#include<algorithm>
using namespace std;
bool d;
int b[101][101],c[101][101],n,tot;
int main(){
    int i,j;
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        for(j=1;j<=i;j++){
            scanf("%d",&b[i][j]);
            c[i][j]=b[i][j];
        }
    }
    for(i=n-1;i>=1;i--)
        for(j=1;j<=i;j++)
            b[i][j]+=max(b[i+1][j],b[i+1][j+1]);
    printf("%d\n%d-",b[1][1],c[1][1]);
    j=1;
    for(int i=2;i<=n;i++){
        if(b[i][j]>=b[i][j+1])
            printf("%d",c[i][j]);
        else{
            printf("%d",c[i][j+1]);
            j++;
        }
        if(i!=n)
            printf("-");
    }
    return 0;
}
时间: 2024-07-28 12:56:31

4979 数塔的相关文章

4979 数塔 (动规)

4979 数塔 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 黄金 Gold 题目描述 Description 有如图数塔,从顶部出发,在每一节点选择向左走或向右走,一直走到底.要求找到一个路径,使路径总和最大. 13 11       8 12       7      26 6      14      15      8 12      7      13      24     11 输入描述 Input Description 第一行输入一正整数n 接下来从第2行到第n

数塔 Easy

在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?  已经告诉你了,这是个DP的题目,你能AC吗? Input输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中第i行有个i个整数,且所有的整数均在区间[0,99]内. Output对于每个测试实例,输出可能得到的最大和,每

1002 数塔取数问题

1002 数塔取数问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 一个高度为N的由正整数组成的三角形,从上走到下,求经过的数字和的最大值. 每次只能走到下一层相邻的数上,例如从第3层的6向下走,只能走到第4层的2或9上. 5 8 4 3 6 9 7 2 9 5 例子中的最优方案是:5 + 8 + 6 + 9 = 28 Input 第1行:N,N为数塔的高度.(2 <= N <= 500) 第2 - N + 1行:每行包括1层数塔的数字,第2行1个数,第3

数塔问题

题目:给定一个数塔.其存储形式为例如以下所看到的的下三角矩阵.在此数塔中,从顶部出发,在每一节点能够选择向下走还是向右走,一直走究竟层.请找出一条路径,使路径上的数值和最大. 输入例子(数塔): 9 12   15 10   6    8 2    18   9    5 19   7    10   4    16 输出例子(最大路径和): 59 分析: 这是动态规划的入门级题目,思路非常easy,自下向上思考,相邻两个数比較大小.取较大的数加到上一层相应的数上面.这样就能够消掉最以下一层,重

HDU 2084 数塔(简单DP入门)

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

HDU 2084 数塔

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

hdu2084 数塔 动态规划第二题

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

HDOJ1176 免费馅饼 【DP】+【经典数塔】

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

HDU2084_数塔【简单题】【数塔】

数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 22488    Accepted Submission(s): 13555 Problem Description 在讲述DP算法的时候,一个经典的样例就是数塔问题,它是这样描写叙述的: 有例如以下所看到的的数塔.要求从顶层走究竟层,若每一步仅仅能走到相邻的结点,则经过的结点的数字