博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数字三角形
阅读量:3660 次
发布时间:2019-05-21

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

问题描述

  (图3.1-1)示出了一个数字三角形。请编一个程序计算从顶至底的某处的一条路

  径,使该路径所经过的数字的总和最大。

  ●每一步可沿左斜线向下或右斜线向下走;

  ●1<三角形行数≤100

  ●三角形中的数字为整数01,…99

 

输入格式

  文件中首先读到的是三角形的行数。

 

  接下来描述整个三角形

输出格式

  最大总和(整数)

样例输入

5

7

3 8

8 1 0

2 7 4 4

4 5 2 6 5

样例输出

30

思路:

如果是从上往下查找最大的和会比较复杂,本来想用递归,可是写不出来,用我这颗人脑递归都有点复杂,所以表达不出来也写不出来。

看了网上的思路,顿时茅塞顿开,上面不行,从下面走,结果发现,从下面往上面更简单了。从倒数第二行开始,每一个值都等于这个值加下面一行的那一列的值和右边的值的最大值,一直加上去,最后第一行第一个就是最大的值了,看代码会更容易理解。(另外,我存储数组是用题目下面这个图的方式存的,所以每一步可向下和向右下走)

#include
using namespace std;int main(){ int n; cin>>n; int a[n][n]; for(int i=0;i
>a[i][j]; for(int i=n-2;i>=0;i--)//找出最大值 { for(int j=0;j<=i;j++) a[i][j]=a[i][j]+max(a[i+1][j],a[i+1][j+1]); } cout<
<

 

你可能感兴趣的文章
预编译语句(Prepared Statements)介绍,以MySQL为例
查看>>
单利模式
查看>>
gdal学习笔记1-读取数据信息
查看>>
python关于print中数据传输的用法
查看>>
sublime text3的快捷键总结
查看>>
gdal学习笔记2-数据读写
查看>>
python中动态生成变量名及赋值
查看>>
python识别数据结构
查看>>
python bisect序列二分法详解
查看>>
python学习笔记字典排序,
查看>>
python内置类 set
查看>>
python getatrra()
查看>>
thinkpython2的扑克牌系列练习最终解读
查看>>
matlab复色光夫琅禾费衍射
查看>>
Java中线程的基本操作以及Thread和Runnable两种实现的比较
查看>>
MongoDbRepository的常用AP操作和易错点
查看>>
MongDBRepository和MongDBOperator和MongTemplate的方法比较
查看>>
IntelliJ IDEA中关于Maven构建复杂的聚合工程的管理和打包问题
查看>>
错误记录关于Model 的Not a managed type: class,无法找到Model
查看>>
关于JPA中Specification接口的问题,记录一下
查看>>