动态规划: 数字三角形
//动态规划例题ppt p22 数字三角形 1.递归
#include<iostream>
#include<cstring>
using namespace std;
int n;
int array[5][5];int f(int r,int j)
{if(r==n-1){return array[r][j];}int num1=f(r+1,j);int num2=f(r+1,j+1);if(num1>num2){return num1+array[r][j];}else{return num2+array[r][j];}
}
int main()
{cin>>n; //5memset(array,0,sizeof(array));for(int i=0;i<n;i++){for(int j=0;j<=i;j++){cin>>array[i][j];}}cout<<f(0,0)<<endl;return 0;
}
//动态规划例题ppt p22 数字三角形 2.递归+备忘录,避免重复计算
#include<iostream>
#include<cstring>
using namespace std;
int n;
int array[5][5];
int maxsum[5][5]; //用来表示该位置有没有计算过,有就直接使用int f(int r,int j)
{if(r==n-1){return array[r][j];}if(maxsum[r+1][j]==-1)//没有就计算{maxsum[r+1][j]=f(r+1,j);}if(maxsum[r+1][j+1]==-1){maxsum[r+1][j+1]=f(r+1,j+1);}if(maxsum[r+1][j+1]>maxsum[r+1][j]) //直接使用计算过的{return maxsum[r+1][j+1]+array[r][j];}else{return maxsum[r+1][j]+array[r][j];}
}
int main()
{cin>>n; //5memset(array,0,sizeof(array));memset(maxsum,-1,sizeof(maxsum));for(int i=0;i<n;i++){for(int j=0;j<=i;j++){cin>>array[i][j];}}cout<<f(0,0);return 0;
}
//动态规划例题ppt p22 数字三角形 3.递推 自底向上计算最大路径,自上向下打印最终路径
#include<iostream>
#include<cstring>
using namespace std;
int array[5][5];
int array1[5][5];
int main()
{int n;cin>>n;memset(array,0,sizeof(array));for(int i=0;i<n;i++){for(int j=0;j<=i;j++){cin>>array[i][j];array1[i][j]=array[i][j];}}for(int i=n-2;i>=0;i--) //自底向上计算,可以算出最大的路径长{for(int j=0;j<=i;j++){if(array[i+1][j]>array[i+1][j+1])//对左右两边的数字进行选择,较大的加上去{array[i][j]+=array[i+1][j];}else{array[i][j]+=array[i+1][j+1];}//cout<<array[i][j]<<" ";}//cout<<endl;}cout<<array[0][0]<<endl;cout<<"路径为:"<<array1[0][0]<<"--->";int m=0;for(int i=0;i<n-1;i++){for(int j=m;j<=i;j++){if(array[i+1][j]>array[i+1][j+1]){cout<<array1[i+1][j]<<"--->";m=j;break;}else{cout<<array1[i+1][j+1]<<"--->";m=j+1;break;}}}return 0;
}
动态规划: 数字三角形相关推荐
- 算法设计与分析——动态规划——数字三角形问题
数字三角形问题 1.题目描述:给定一个由n行数字组成的数字三角形,如图3-7所示.设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大. 算法设计:对于给定的由n行数字组成的数字 ...
- 七:动态规划-数字三角形
问题: 数字三角形 问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1&l ...
- 动态规划-数字三角形问题
有一个由非负整数组成的三角形,第一行只有一个数,除了最下行之外每个数的左下方和右下方各有一个数. 1 3 2 4 10 1 4 3 2 20 从第一行的数开始,每次可以往左下或右下走一格,直到走到最下 ...
- 动态规划——数字三角形C语言
一:分析 先说一下相关动态规划的一些概念,参考下方博文. 原文链接:https://blog.csdn.net/every__day/article/details/88174082 "一个 ...
- [AcWing] 1018. 最低通行费(C++实现)数字三角形模型
[AcWing] 1018. 最低通行费(C++实现)数字三角形模型 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总结 ...
- C++数字三角形问题(动态规划)
一.问题描述 ★问题描述:给字一个由n行数字组成的数字三角形(等腰三角形).试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大. ★算法设计:对于给定的由n行数字组成的数字三 ...
- 数字三角形 计算最大路径 动态规划
以所经过的权值之和最大值为例进行说明. 行进的过程中,每次只有两种选择:向左或向右.一个有n层的数字三角形的完整路径有2n条,所以当n比较大的时候,搜索全部路径,从中找出最大值,效率较低. 采用动态规 ...
- python--lintcode109.数字三角形(动态规划)
描述 给定一个数字三角形,找到从顶部到底部的最小路径和.每一步可以移动到下面一行的相邻数字上. 如果你只用额外空间复杂度O(n)的条件下完成可以获得加分,其中n是数字三角形的总行数. 您在真实的面试中 ...
- 【算法】【动态规划篇】第3节:数字三角形问题
本期任务:介绍算法中关于动态规划思想的几个经典问题 [算法][动态规划篇]第1节:0-1背包问题 [算法][动态规划篇]第2节:数字矩阵问题 [算法][动态规划篇]第3节:数字三角形问题 [算法][动 ...
- 经典算法——数字三角形的三种解题方法:递推、记忆化搜索、动态规划
上题目链接: http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/1730.html 递推方法: i ...
最新文章
- CF1010F Tree
- 如何设计一个端计算架构?
- 互联网产品的灰度发布
- mybatis 多对多 处理
- Hibernate框架 五种查询方式
- matplotlib调整子图尺寸,消除大图白边框
- 前台页面通过ajax环境和js调用web service的几种方法
- Java面向对象程序设计--与C++对比说明:系列2(类机制)
- php动态柱形图,php生成柱状图(统计图)程序
- Chrome即将封杀Google Earth、Google Talk等插件
- 09-部署配置kubedns插件
- 解决svn文件图标不显示
- 数列求和再求极限问题
- Word删除页眉横线的方法
- 18位身份证的正则表达式并说明
- 基于全数字摄影测量工作站制作DOM简介
- 【文章导读】什么是旁道攻击?Meltdown Redux英特尔漏洞(MDS攻击);KAISER:从用户空间隐藏内核(KAISER);Meltdown/Spectre分析
- JavaScript:实现计算二维平面上两点之间的距离算法(附完整源码)
- ChaosBlade:混沌工程简介(一)
- 国医中药,人参神秘而又独特的地位
热门文章
- SELECT COUNT用法
- final关键字多态
- pdf阅读器修改背景颜色 护眼色
- Atitit recv https req post code 接受https请求// npm install axios// 安装依赖:npm install body-parse
- Atitit 大数据体系图 大数据 技术 数据采集 gui自动化 爬虫 Nui自动化 Ocr技术 Tts语音处理 文档处理(office zip等) html文档处理解析 转
- Atitit etl之道 attilax著 1. ETL	1 1.1. (数据仓库技术)	2 1.2. ETL的质量问题具体表现为正确性、完整性、一致性、完备性、有效性、时效性和可获取性等几个特性
- paip.互联网产品要成功的要素
- paip.c++ qt C:\iwmake\build_mingw_opensource _Unwind_Resume的问题
- PAIP.在程序中设置壁纸墙纸
- paip.VS2010未能加载类型