动态规划初步--数字三角形
数字三角形是一个由非负数组成的三角形,第n行有n个数,形如:
1
2 3
4 5 6
除最下行之外,每一行的左下和右下各有一个数,从第一行开始,向下,左或者右走一格,直到走到最后一行,所经过的路径上的数的和最大
除了简单的递归运算:
int d(int i,int j){return a[i][j]+(i==n?0:d(i+1,j)>?d(i+1,j+1));
}
以及递推运算:
int i,j;
for(j=1;j<=n;j++)d[n][j]=a[n][j];
for(i=n-1;i>=1;i--)
for(j=1;j<=i;j++){d[i][j]=a[i][j]+d[i+1][j]>?d[i+1][j+1];
}
还可以用记忆化搜索的方法,减少计算量,记忆化搜索的方法定义一个数组d,d初始化值全部为-1,然后再编写递归函数,如果发现d[i][j]的值已经被计算过了,就直接返回:
1 #include "stdio.h" 2 #include "memory.h" 3 int d[100][100]; 4 int a[100][100]; 5 int n; 6 int b(int i,int j){ 7 if (d[i][j]>=0) return d[i][j]; 8 if (i!=n) 9 { 10 int temp=b(i+1,j)>b(i+1,j+1)?b(i+1,j):b(i+1,j+1); 11 d[i][j]=a[i][j]+temp; 12 } 13 else{ 14 d[i][j]=a[i][j]; 15 } 16 return d[i][j]; 17 } 18 void main(){ 19 memset(a,0,100*100*sizeof(int)); 20 memset(d,-1,100*100*sizeof(int)); 21 scanf("%d",&n); 22 for(int i=0;i<n;i++){ 23 for (int j=0;j<=i;j++) 24 { 25 scanf("%d",&a[i][j]); 26 } 27 } 28 int t=b(0,0); 29 }
转载于:https://www.cnblogs.com/txlbupt/p/3157773.html
动态规划初步--数字三角形相关推荐
- 最长子序列和 动态规划python_算法基础之python实现动态规划中数字三角形和最长上升子序列问题...
数字三角形问题:python 问题描述:函数 问题分析:spa 程序代码:(递归法和动归法)code # -*- coding: utf-8 -*- """ Create ...
- 动态规划之数字三角形模型
数字三角形模型 前言 最低通行费 方格取数 传纸条 前言 数字三角形题型的一般描述是: 给定一个共有N行的三角矩阵A,其中第t行有X列.从左上角出发,每次可以向下方或右下方走一步,最终到达底部求把经过 ...
- 【动态规划】数字三角形2
[题目描述] 数字三角形 要求走到最后mod 100最大 [输入格式] 第1行n,表示n行 <=25 第2到n+1行为每个的权值 [输出格式] mod 100最大值 [分析] 设置状态f[i][ ...
- 动态规划_数字三角形
问题描述:在下面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大,路径上的每一步都只能往左下或右下走.只需要求出这个最大和即可,不必给出具体路径. 输入数据的要求:三角形的行数 ...
- 动态规划之数字三角形问题
问题描述 在数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大.路径上的每一步都只能往左下或者右下走.只需要求出这个最大和即可.不必给出具体路径. 三角形的行数大于1小于等于100 ...
- 【动态规划】数字三角形c语言
本学期的的算法实践课的实验作业.写的不好请大家多多指教. [题目] 试设计一个算法,计算出从三角形的顶到底的一条路径,使该路径经过的数字总和最大. 数据输入: 由文件input.txt提供输入数据.文 ...
- 动态规划解决数字三角形
美图: 问题描述: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 给定一个数字三角形,如上,在这个三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大.路径上的每一步都只能 ...
- C++ 数字三角形(动态规划)
一.题目 有三种方法实现: 这里就求权值之和最大的,最小的类似就不分析了. 1.自底向上 缺点:算法复杂,重复计算 2.自顶向下 缺点:重复计算,浪费时间 3.动态规划 思路和自底向上.自顶向下一 ...
- 2018.01.01(数字三角形,最长上升子序列等)
2017.12.24 简单的动态规划 1.数字三角形(算法引入) 题目描述:下图所示是一个数字三角形,其中三角形中的数值为正整数,现规定从最顶层往下走到最底层,每一步可沿左斜线向下或右斜线向下走.设 ...
最新文章
- 从bitmap到布隆过滤器,再到高并发缓存设计策略
- 第六篇:Feedforward Networks 前向网络
- Android开发:图文分析 Handler通信机制 的工作原理
- yolov3 paddle
- Node.js 和Socket.IO 实现chat
- 【控制】《现代控制理论》谢克明老师-目录
- echarts - 使用echarts过程中遇到的问题(pending...)
- 校招对项目实战要求分析
- C_Learning(3)
- c# RestClient 请求接口
- Windows下Postman安装以及汉化
- Excel转PDF,Excel行数过多导致PDF折行、换行显示
- 手机怎么查看连接过的wifi密码
- Exception in thread “main“ java.lang.ArrayIndexOutOfBoundsException: 6 at lian39.main(lian39
- 虚拟服务器virt,virt-install error,主机不支持任何虚拟化选项
- 这个世界上,没有什么是实实在在的, 都是空虚,虚无, 空虚的空,虚无的虚,无的无....
- 页面驱动开发(Page Driven) —— 一种大多数人还不认同的技术
- Linux查看历史命令 history
- 记录一次redis漏洞攻击
- 【淘宝ERP-资料收集】关于Datatable的一些用法
热门文章
- .net core WebApi 使用Swagger生成API文档
- 自写图片遮罩层放大功能jquery插件源代码,photobox.js 1.0版,不兼容IE6
- 天平称重【递归解法】
- Mysql5.7.20使用group by查询(select *)时出现错误--修改sql mode
- spring EL 实现ref的效果
- Linux命令工具基础02 文件及目录管理
- 关于页面布局的一些注意点
- js - (初中级)常见笔试面试题
- 【转】几张图看懂列式存储
- C# 微支付退款申请接口 V3.3.6