当前位置: 首页 > news >正文

北京建设电工证查询网站文库百度登录入口

北京建设电工证查询网站,文库百度登录入口,合肥seo推广公司哪家好,织梦制作网站地图信息学奥赛一本通(C版)在线评测系统 基础算法 第一节 动态规划的基本模型 1288:三角形最佳路径问题 1. 理解题意 同学们,我们来看一个有趣的数字三角形。就像这样: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5从这个三角形的…

信息学奥赛一本通(C++版)在线评测系统
基础算法 第一节 动态规划的基本模型
1288:三角形最佳路径问题


1. 理解题意

同学们,我们来看一个有趣的数字三角形。就像这样:

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

从这个三角形的顶部开始,一直走到最下面那一行,有好多条不同的路可以走。走的时候有个规则哦,每一步只能走到下一层离它最近的正下方或者右下方的数字那里。比如说,从“7”出发,可以走到“3”或者“8”。然后把走过的数字都加起来,得到一个和。在这么多不同的走法里,有一条路加起来的和是最大的,我们的任务就是找到这个最大的和是多少。

2. 解题思路

我们可以从三角形的底部开始往上算,这有点像搭积木倒着搭。为什么要从下往上呢?因为从下往上算的话,对于每一个数字,我们都能清楚地知道从它往下走哪条路能得到更大的和。

我们给每个数字都“记录”一个数,这个数就是从这个数字出发,走到最下面能得到的最大和。最下面那一行的数字,从它们出发走到最下面的最大和就是它们自己。然后往上一层,对于每个数字,我们看看从它走到下一层的两个相邻数字(正下方和右下方),哪个数字记录的和更大,就把这个更大的和加上当前数字,得到当前数字新的“记录”。就这样一层一层往上算,最后顶部数字记录的和就是从顶部到底部的最佳路径的和啦。

3. 解题步骤

  1. 输入三角形:首先输入三角形的高度h,也就是最下面那一行数字的个数。然后按照三角形的样子,把每一行的数字都输入到程序里,存到一个像小表格一样的地方(二维数组)。
  2. 初始化最底层的和:最下面那一行的数字,它们走到最下面的最大和就是它们自己,所以先把最下面那一行每个数字对应的最大和都设成它自己。
  3. 从下往上计算:从倒数第二层开始往上,对于每一层的每个数字,比较它走到下一层相邻两个数字记录的和,把大的那个和加上当前数字,更新当前数字记录的和。
  4. 得到结果:最后,三角形顶部数字记录的和就是最佳路径的长度数值,把这个数值输出。

4. C++代码实现

#include <iostream> // 包含输入输出流的头文件,这样我们就能输入和输出数据啦
using namespace std; int main() {int h; // 定义变量h,用来存储三角形的高度cin >> h; // 从键盘输入三角形的高度hint a[101][101]; // 定义二维数组a,用来存储三角形里的数字,最多可以存100层的三角形// 输入三角形里的每个数字for (int i = 1; i <= h; i++) { for (int j = 1; j <= i; j++) { cin >> a[i][j]; // 从键盘输入当前位置的数字}}// 从下往上计算每个位置出发的最大和for (int i = h - 1; i >= 1; i--) { for (int j = 1; j <= i; j++) { // 比较从当前数字走到下一层相邻两个数字记录的和,取大的加上当前数字if (a[i + 1][j] > a[i + 1][j + 1]) { a[i][j] += a[i + 1][j]; } else {a[i][j] += a[i + 1][j + 1]; }}}cout << a[1][1] << endl; // 输出三角形顶部数字记录的和,也就是最佳路径的长度数值return 0; 
}

5. 知识点总结

  1. 二维数组:我们用二维数组a来存储数字三角形。二维数组就像是一个有行有列的小表格,a[i][j]表示第i行第j列的数字。通过它,我们可以方便地找到三角形里的每个数字。
  2. 循环嵌套:使用了两层循环来输入三角形的数字,又用两层循环从下往上计算每个数字出发的最大和。外层循环控制行数,内层循环控制每行的数字个数。循环嵌套可以让我们对二维数组里的每个元素进行操作。
  3. 动态规划思想:这是解决这个问题的关键思想。动态规划就是把一个大问题分成很多小问题,先解决小问题,再通过小问题的解得到大问题的解。在这个问题里,我们从最下面一行数字开始,逐步往上计算每个数字出发的最大和,最后得到整个三角形最佳路径的和。
http://www.dtcms.com/a/440621.html

相关文章:

  • 网站制作需求表做生意必定红火的公司名字
  • 求推荐在哪个网站做德语翻译员网站开发团队分工
  • 网站商城建设的维度网站建设与管理学什么
  • 中国建设银行公司网站官网申请个网站要多少钱
  • 腾讯云如何建设网站长春火车站是哪个区
  • 做网站分前台后端吗wordpress多站点配置教程
  • 苏州做网站的哪个公司比较好建设网站用哪个主机好
  • 服务器怎么做网站教程门户网站的主要特点
  • 网站开发主要学些什么软件网页设计实训总结100字
  • 地方门户网站模版万网网站发布
  • 青岛外贸网站建设网站被攻击如何处理
  • 聊城网站建设信息1v1网站建设
  • 做流量网站logo设计大全
  • 电子商务网站项目建设阶段的划分网络上做假网站做物流
  • 珠海市律师网站建设怎么样网站建设专业课程
  • 公司网站建设推广词网站开发的相关技术
  • 地方网站怎么做的注册公司需要啥资料
  • 网站设计是怎么设计的网站代码优化
  • 替换wordpress后台登录logoseo关键词优化排名外包
  • 网站标题几个字合适龙岩个人小程序开发
  • 如何做的网站手机可以用吗做网站用vs
  • 微网站 服务器东莞服务
  • 手机网站定制开发费用糗事百科网站模板
  • 嘉兴网嘉兴网站建设本科自考有哪些科目
  • 深圳网站建设公司排行互联网企业信息服务平台
  • 一直能打开的网站突然打不开后台管理网站建设
  • 搜索建站郑州春蕾网站建设
  • 不用源码做网站网页设计和网站制作
  • 友点网站建设二级域名站群
  • 关于苏宁易购网站建设的不足之处郑州建站系统在线咨询