【递归】数字三角形 简单dp

【递归】数字三角形

题目描述

对于大多数人来说,“我们是这么的正常,因此也就这么的平庸。”而天才总是与众不同的,所以当邪狼问修罗王:“老大,你蹲在那儿一动不动看了有半个小时了,蚂蚁有那么好看吗?”

修罗王是这样回答的:“我在思索人生的意义,你看这蚂蚁的面前有无数的道路选择,但它不知道选择哪条路可以到达目标,也不知道哪条路上有更多的食物,更不知道现在选择的道路对它以后的影响……”

如图所示,有一个层数为n(n≤1000)的数字三角形。现有一只蚂蚁从顶层开始向下走,每走下一级时,可向左下方向或右下方向走。求走到底层后它所经过数字的总和的最大值。

输入

第一个整数为n,以下n行为各层的数字。

输出

一个整数,即最大值,保证不超过整型的最大范围。

样例输入

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

样例输出

23

提示

最大值=1+3+6+6+7=23

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

long long int a[1002][1002];

int main()
{
    int n;
    scanf("%d", &n);
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= i; j++){
            scanf("%lld",&a[i][j]);
        }
    }
    for(int i = n-1; i >=1; i--){
        for(int j = 1; j <= i; j++){
            a[i][j] += max(a[i+1][j],a[i+1][j+1]);
        }
    }
    printf("%lld\n",a[1][1]);
    return 0;
}

时间: 2024-08-02 02:48:04

【递归】数字三角形 简单dp的相关文章

hihoCoder#1037 : 数字三角形(DP)

[题目链接]:click here~~ 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描写叙述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋彼岸的美国.美国人民的生活很有意思,常常会有形形色色.奇奇怪怪的活动举办.这不,小Hi和小Ho刚刚下飞机,就赶上了当地的迷宫节活动. 迷宫节里展览出来的迷宫都特别的有意思.可是小Ho却相中了一个事实上并不怎么像迷宫的迷宫--由于这个迷宫的奖励很丰富~ 于是小Ho找到了小Hi,让小Hi帮助

算法训练 数字三角形(DP)

问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ●三角形中的数字为整数0,1,…99: . (图3.1-1) 输入格式 文件中首先读到的是三角形的行数. 接下来描述整个三角形 输出格式 最大总和(整数) 样例输入 573 88 1 02 7 4 44 5 2 6 5 样例输出 30 从下往上进行计算就好了,还可以用DP的方法来解 #include<

1037 数字三角形 (dp算法解决)

#1037 : 数字三角形 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋彼岸的美国.美国人民的生活非常有意思,经常会有形形色色.奇奇怪怪的活动举办,这不,小Hi和小Ho刚刚下飞机,就赶上了当地的迷宫节活动.迷宫节里展览出来的迷宫都特别的有意思,但是小Ho却相中了一个其实并不怎么像迷宫的迷宫——因为这个迷宫的奖励非常丰富~ 于是小Ho找到了小Hi,让小Hi帮助他获取尽可能多的

sdut1730 数字三角形问题(dp入门题)

#include<stdio.h> int a[100][100]; int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) scanf("%d",&a[i][j]); int maxx =0; for(int i=2;i<=n;i++) for(int j=1;j<=i;j++){ if(j == 1) a[i

codevs——T1220 数字三角形

http://codevs.cn/problem/1043/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走或得向右走,一直走到底层,要求找出一条路径,使路径上的值最大. 输入描述 Input Description 第一行是数塔层数N(1<=N<=100). 第二行起,按数塔图形,有一个或多个的整数,表示该层节点的值,共有N行. 输出描述 Out

数字三角形 (简单DP)

问题描述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋彼岸的美国.美国人民的生活非常有意思,经常会有形形色色.奇奇怪怪的活动举办,这不,小Hi和小Ho刚刚下飞机,就赶上了当地的迷宫节活动.迷宫节里展览出来的迷宫都特别的有意思,但是小Ho却相中了一个其实并不怎么像迷宫的迷宫--因为这个迷宫的奖励非常丰富~ 于是小Ho找到了小Hi,让小Hi帮助他获取尽可能多的奖品,小Hi把手一伸道:"迷宫的介绍拿来!" 小Ho选择的迷宫是一个被称为"数字

4829 [DP]数字三角形升级版

4829 [DP]数字三角形升级版 时间限制: 1 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 从数字三角形的顶部(如图,第一行的5表示行数)到底部有很多条不同的路径.对于每条路径,把路径上面的数加起来可以得到一个和,且!!!!!!!!! ================================================================================== =================

简单动态规划---动态的数字三角形

动态的数字三角形 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 一个数字组成的三角形,有n行,第i行有i个数.从第一个数开始,每次可以往左下或右下走一格,直到走到最后一行,把沿途经过的数全部加起来.如何走才能得到最大的和?    举个例子:                           为了简单起见,输入时将每行的数依次输入,第一个数之前并不输入空格. 输入 第一行:n,表示这个三角形共有n行第二至n+1行:依次为这

数字三角形 17 初入dp

Description 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 给出了一个数字三角形.从三角形的顶部到底部有很多条不同的路径.对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和. 注意:路径上的每一步只能从一个数走到下一层上和它最近的左边的那个数或者右边的那个数. Input 输入数据有多组,每组输入的是一行是一个整数N (1 < N <= 100),给出三角形的行数.下面的N行给出数字三角形.数字三角形上的数的范围都在0和100之间. Output