`

10303 数字三角

 
阅读更多

10303 数字三角(必做)

时间限制:1000MS  内存限制:65535K
提交次数:117 通过次数:56

题型: 编程题   语言: C++;C;VC;JAVA

Description

问题描述:给定一个由n行数字组成的数字三角形,如下图所示。试用动态规划算法,计算出从三角顶部至底部的一条路径,使得该路径经过的数字总和最大。

注意每个数字只能走向下一行左边或右边的数字,而不能跳跃的走。
         7
      3   8
    8   1   0
  2   7   4   4
4   5   2   6   5




输入格式

第一行是数字三角的行数n,1<=n<=100。接下来n行是数字三角各行中的数字,所有数字在0~99之间。



输出格式

输出两行,第一行是计算出的最大路径的和值,第二行是该路径上的数字。若有多条路径,靠右的路径优先(即仅仅输出靠右的路径即可,无需多条路径都输出)。


如:
Input: 
5
7
3 8
8 1 6
2 7 4 4
4 5 2 4 5
有两条路径:7-3-8-7-5和7-8-6-4-5都为30,由于后者靠右,因此仅输出后者。
Output: 
30
7 8 6 4 5



输入样例

5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

 

#include <iostream>

#include <stdio.h>

using namespace std;

   int n;

int a[10000][10000],b[10000][10000]; //记录数据 、 记录计算的和  1<=n<=100

void findP(){

    for(int i=n;i>=1;i--)

    {

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

        {

            if(j==n) b[i][j]= a[i][j];  //底层节点值和 = 本身节点值

            else {

                if(b[i+1][j]>b[i+1][j+1])  //本节点值和 =取下一层子树值和的最大值 + 本节点值

                b[i][j] = b[i+1][j] + a[i][j];

                else

                b[i][j] = b[i+1][j+1] + a[i][j];

            }

        }

    }

}

int main()

{

   freopen("in.txt","r",stdin);

   cin >>n;

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

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

        cin >> a[i][j];

 

    findP();

    cout<< b[1][1]<<endl;

     cout << a[1][1];

     int temp = b[1][1]-a[1][1];

    for(int i=2;i<=n;i++)

    {

        for(int j=i;j>=1;j--) //靠右的路径优先

        {

 

        if(b[i][j]==temp)  //一一匹配

            {

                cout << " " <<a[i][j];

                temp-=a[i][j];  //更新每一层的匹配值

                break;  //进入下一层循环

            }

 

        }

    }

 

    return 0;

}

 

分享到:
评论

相关推荐

    10303 数字三角(dp).zip_4 3 2 1_quietvzi_yourselfy63_算法

    接下来n行是数字三角各行中的数字,所有数字在0~99之间。 输出格式 输出两行,第一行是计算出的最大路径的和值,第二行是该路径上的数字。若有多条路径,靠右的路径优先(即仅仅输出靠右的路径即可,无需多条路径都...

    数字三角形问题给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形

    Problem B:数字三角形问题 Description 给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径,使该路径经过的数字总和最大。 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 ...

    C++ 数字三角问题

    在编程领域,尤其是在算法设计和优化中,"数字三角问题"是一个常见的挑战。这个问题通常涉及到在一个二维数组(或称为“三角形”)中找到一条路径,使得从顶部到底部经过的元素之和最小。在这个场景中,我们使用了...

    数字三角(算法)

    ### 数字三角(算法) #### 问题描述及分析 本问题要求从给定的一个由`n`行数字组成的三角形中找到一条从顶到底的路径,使得路径上所经过的数字之和最大。例如,考虑以下示例: ``` 7 3 8 8 1 0 2 7 4 4 4 5 ...

    数字三角 dp

    接下来n行是数字三角各行中的数字,所有数字在0~99之间。 输出格式 输出两行,第一行是计算出的最大路径的和值,第二行是该路径上的数字。若有多条路径,靠右的路径优先(即仅仅输出靠右的路径即可,无需多条路径...

    基于C实现的N阶数字正方形 ;N阶数字三角形;N阶数字递减三角形;乘法表

    N阶数字三角形(也称为帕斯卡三角)是一种二维数组,其中每个数字是其上方两个数字的和。首行和首列都为1。例如,4阶数字三角形的前几行是: ``` 1 1 1 1 2 1 1 3 3 1 ``` 实现时,可以使用动态规划,用二维...

    Multisim数字式三角波发生器

    利于Multisim11模拟的数字三角波发生器

    VB 数字三角

    在VB(Visual Basic)编程中,"数字三角"通常指的是帕斯卡三角形(Pascal's Triangle),这是一个在数学和计算机科学中常见的图形结构。帕斯卡三角形每一行的数字是由上一行的数字通过特定规则生成的,具有很多有趣...

    matlab用三角窗设计数字高通滤波器及其滤波

    _matlab_语言是设计数字高通滤波器的一种常用方法,本文将详细介绍 matlab 用三角窗设计数字高通滤波器的过程。 一、数字高通滤波器的设计 数字高通滤波器的设计主要涉及到三个方面:滤波器的长度、截止频率和窗...

    2019数字长三角一体化发展报告:打造全球数字经济高地.pdf

    ### 2019数字长三角一体化发展报告:打造全球数字经济高地 #### 一、长三角区域一体化的战略意义 - **国家战略地位提升**:继京津冀、珠三角之后,长三角一体化被明确提升为国家战略,旨在加强该区域在全球合作与...

    长三角数字经济发展报告(2021).pdf

    "长三角数字经济发展报告(2021)" 长三角数字经济发展报告(2021)是指对长三角地区数字经济的发展情况进行的评估和分析。长三角地区是指江苏、浙江和上海三省市的经济合作区域,是中国经济的重要增长极。数字经济...

    2019长三角城市数字经济指数白皮书.pdf

    根据提供的文件信息,下面详细说明了长三角数字经济发展现状、总体评价、城市样板以及发展趋势和建议的知识点。 长三角数字经济发展现状: 长三角地区由上海市、江苏省、浙江省和安徽省组成,是全球数字经济发展的...

    C++蛇形数组(数字倒三角)

    "蛇形数组(数字倒三角)"是一种特殊的矩阵排列方式,通常出现在算法竞赛或编程练习中,例如重庆大学ACM竞赛中的第一题。这个题目要求使用C++编程语言,将数字按照特定的“蛇形”路径填充到一个二维数组中,并将结果...

    数字高程模型-三角网法

    ### 数字高程模型-三角网法 #### DEM与DTM基本概念 数字高程模型(Digital Elevation Model,简称DEM)是地理信息系统中的一个重要组成部分,它通过一系列三维坐标(x,y,z)来表示地表的起伏状况。这里的z轴代表...

    数模解决方案,数字地面模型,Delaunay三角网

    总的来说,Delaunay三角网和数字地面模型在地理信息系统中扮演着关键角色,而VC++作为强大的编程工具,可以用来实现这些复杂的算法。结合语音响应和语音识别技术,可以创建出更加用户友好的GIS应用。对于希望深入...

    人才驱动下的区域一体化与数字化转型——长三角地区数字经济与人才发展研究报告精品报告.pdf

    人才驱动下的区域一体化与数字化转型——长三角地区数字经济与人才发展研究报告精品报告.pdf

    数字三角问题

    【数字三角问题】是一种经典的计算机科学问题,源自于数学中的帕斯卡三角形,它在算法设计和分析中占有重要地位。这个问题通常涉及到查找通过动态规划方法最优路径的问题。在这个场景下,我们有一个由数字组成的...

    c++ 蛇形数组 倒三角

    通过以上步骤,我们可以完成C++编程解决“蛇形数组”(数字倒三角)的问题。在实际编程中,还需要考虑错误处理,如输入验证、内存管理等细节。同时,ACM竞赛中的这类问题通常要求高效,因此优化算法和减少不必要的...

    2019数字长三角一体化发展报告

    1、继京津冀、珠三角之后,长三角一体化也上升为国家战略。在高质量发展的要求下,长三角要需要更好地代表国家参与新一轮全球合作与 竞争,打造我国发展强劲活跃的增长极和科技创新的领头羊,更好引领长江经济带...

Global site tag (gtag.js) - Google Analytics