数字三角形求和问题

计算从顶到底的某处的一条路径,使该路径所经过的数字总和最大。只要求输出总和。   1、 一步可沿左斜线向下或右斜线向下走;   2、 三角形行数小于等于100; 3、 三角形中的数字为0,1,…,99; 测试数据通过键盘逐行输入,数组如下所示格式:

数字三角形的表示:数字三角形可以用一个二维数组表示

问题解决有两种思路顺推法逆推法

顺推法

从(1,1)出发到最底层路径最大权值和,路径中是各个点串联而成,路径起点固定,终点和中间点相对不固定。即从上往下寻找路径最大权值。

F[x][y]表示从(1,1)出发到达(x,y)的路径最大权值和。

向左:
F[x][y]=F[x-1,y]+A[x,y];
向右:
F[x][y]=F[x-1,y-1]+A[x,y];

边界条件:F[1][1]=A[1][1]

#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN= 1005;
int A[MAXN][MAXN],F[MAXN][MAXN],n;
int main()  {cin >> n;for(int i = 1;i <= n;i ++)for(int j = 1;j <= i;j ++)cin >> A[i][j];F[1][1] = A[1][1];for(int i = 2;i <= n;i ++){for(int j = 1;j <= i;j ++){F[i][j]=max(F[i-1][j-1],F[i-1][j])+A[i][j];}}int answer =0;for(int i = 1;i <= n;i ++)answer = max(answer,F[n][i]);cout << answer << endl;return 0;}

结果:

逆推法

F[x][y]表示从n层出发到达(x,y)的路径最大权值和。即从下往上。

F[i][j]=max(F[i+1][j],F[i+1][j+1])+A[i][j];

边界条件: F[n][i]=A[n][i]

#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 1005;
int A[MAXN][MAXN],F[MAXN][MAXN],n;
int max(int a,int b){if(a>b) return a;return b;
}
int main()  {int i;cin >> n;for( i = 1;i <= n;i ++)for(int j = 1;j <= i;j ++)cin >> A[i][j];for( i = 1;i <=n;i ++)F[n][i] = A[n][i];for( i = n-1;i >=1;i --)for(int j = 1;j <= i;j ++)F[i][j]=max(F[i+1][j],F[i+1][j+1])+A[i][j];cout << F[1][1] << endl;return 0;}

结果:

递推算法之数字三角形求和问题相关推荐

  1. 递推算法(以数字三角形为例)

    递推算法(以数字三角形为例) 数字三角形.如下所示为一个数字三角形.请编一个程序计算从顶到底的某处的一条路径,使该路径所经过的数字总和最大.只要求输出总和. 1. 一步可沿左斜线向下或右斜线向下走: ...

  2. 递推算法与递推套路(手撕算法篇)

    联系我们:有道技术团队助手:ydtech01 / 邮箱:[ydtech@rd.netease.com] 之前学习基础知识的时候也说了,递推和动态规划有这暧昧不清的关系,可以说,动态规划就是多了一个决策 ...

  3. C语言经典递推算法之杨辉三角展开(详解)

    文章目录 一.递推算法 二.杨辉三角展开 一.递推算法 这是一种比较简单的算法,即通过已知条件,利用特定关系得到中间结论,然后得到最后结果的算法.递推算法可以分为顺推和逆推两种. 二.杨辉三角展开 1 ...

  4. 递推算法-五种典型的递推关系

    递推算法 递推法是一种重要的数学方法,在数学的各个领域中都有广泛的运用,也是计算机用于数值计算的一个重要算法.这种算法特点是:一个问题的求解需一系列的计算,在已知条件和所求问题之间总存在着某种相互联系 ...

  5. 微课|中学生可以这样学Python(8.3节):递推算法例题讲解

    适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第8章  常用算法的Python实现 8.3  递推算法案例分析 京东购买链接:https://i ...

  6. 递推算法与递推套路(算法基础篇)

    联系我们:有道技术团队助手:ydtech01 / 邮箱:[ydtech@rd.netease.com] 相信了解算法同学经常会说动态规划太难了,看到题目完全不知从何下手,或者是说"一看题解就 ...

  7. B样条曲线——de Boor递推算法实现

    B样条曲线--de Boor递推算法实现 1. 定义   为保留Bezier方法的优点,B样条曲线的方程定义为 P(t)=∑i=0nPiNi,k(t)P(t)=\sum_{i=0}^n P_i N_{ ...

  8. c语言递推算法微课,最小二乘参数估计的递推算法及其C语言实现 精品.pdf

    2009年4月 焦作大学学报 №.2 第2期 JoURNALOFJIAOZUOUNIVERSITY Apr.2009 最小二乘参数估计的递推算法及其C语言实现 胡 沙 (河南理工大学电气工程与自动化学 ...

  9. Bezier曲线——de Casteljau递推算法实现

    1. 定义 给定 n + 1 n+1 n+1个点的位置矢量 P i ( i = 0 , 1 , - , n ) P_i(i=0,1,\dots,n) Pi​(i=0,1,-,n),则Bezier曲线可 ...

最新文章

  1. 临时整形变量溢出的问题
  2. Criteria查询之分页显示数据
  3. 【pytorch】pytorch-yolov3拍照并保存,进行检测后遍历所有图片并显示图片
  4. mysql group replication 安装配置详解
  5. 算法设计与分析:芯片测试问题、选择问题详解
  6. java map 值排序_使用Java8 Stream API对Map类型按照键或值进行排序
  7. linux 修改ldap密码,centos – ldap强制用户更改密码
  8. 服务器内存超限问题_服务器内存爆满最佳处置方案
  9. 吉日嘎拉DotNet.BusinessV4.2中的一处bug,及我的修复和扩展
  10. mysql 执行计时_ps-top 用于MySQL的数据库top工具
  11. AndroidStudio选中代码后,光标自动变粗,自动变成ins模式的解决方法
  12. java cjson_使用cJSON
  13. java开发运行环境的安装步骤_配置java开发运行环境的步骤
  14. Python生成requirement.txt文件
  15. 鸟哥Linux私房菜:第六章笔记
  16. Linux下poky编译1
  17. min-height和min-width的使用场景
  18. 服务器被流量攻击如何处理
  19. 机器学习技法11: Gradient Boosted Decision Tree(GBDT)
  20. pandas.core.base.SpecificationError: nested renamer is not supported

热门文章

  1. (考研湖科大教书匠计算机网络)第一章概述-第二节:三种交换方式(电路交换、报文交换和分组交换)
  2. html5爱心鱼游戏,HTML5小游戏---爱心鱼(下)
  3. 2019美网男单决赛纳达尔第19大满贯冠
  4. pythonbyte转int_Python将byte数组转换为int
  5. 爱普生Epson L15158 一体机驱动
  6. js案例:5秒后再次点击
  7. C,VB和C#,我的编程三部曲
  8. [GFCTF2021] NSS wp
  9. Building my first maching learning system
  10. 测试开发工作者的日记:2020.6.3