博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codevs——1220 数字三角形(棋盘DP)
阅读量:6311 次
发布时间:2019-06-22

本文共 1003 字,大约阅读时间需要 3 分钟。

 

 

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
 
 
 
题目描述 
Description

如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走或得向右走,一直走到底层,要求找出一条路径,使路径上的值最大。

输入描述 
Input Description

第一行是数塔层数N(1<=N<=100)。

第二行起,按数塔图形,有一个或多个的整数,表示该层节点的值,共有N行。

输出描述 
Output Description

输出最大值。

样例输入 
Sample Input

5

13

11 8

12 7 26

6 14 15 8

12 7 13 24 11

样例输出 
Sample Output

86

数据范围及提示 
Data Size & Hint
数字三角形

分类标签 Tags 

 
 
 
 
代码
#include
#include
#include
#include
#include
#include
using namespace std;int n,a[1000][1000],f[1000][1000];int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) scanf("%d",&a[i][j]); for(int i=n-1;i>=1;i--) for(int j=1;j<=i;j++) a[i][j]=max(a[i][j]+a[i+1][j],a[i][j]+a[i+1][j+1]); printf("%d",a[1][1]); return 0;}

 

思路

从下面开始找,把下面的值累加到上面一行,

由于每次都只能从它的左右两个子节点找值,所以每次只找他两个子节点进行累加就可以啦!

转载于:https://www.cnblogs.com/z360/p/6740503.html

你可能感兴趣的文章
Mysql explain
查看>>
初识闭包
查看>>
java tcp socket实例
查看>>
011 指针的算术运算
查看>>
hdu1874畅通工程续
查看>>
rails 字符串 转化为 html
查看>>
java-学习8
查看>>
AOP动态代理
查看>>
Oracle序列
查看>>
xcodebuild命令行编译错误问题解决
查看>>
Yii2.0 下的 load() 方法的使用
查看>>
华为畅玩5 (CUN-AL00) 刷入第三方twrp Recovery 及 root
查看>>
LeetCode----67. Add Binary(java)
查看>>
母版页 MasterPage
查看>>
[转] ReactNative Animated动画详解
查看>>
DNS原理及其解析过程
查看>>
记录自写AFNetWorking封装类
查看>>
没想到cnblog也有月经贴,其实C#值不值钱不重要。
查看>>
【转】LUA内存分析
查看>>
springboot使用schedule定时任务
查看>>