(动态规划)数字三角形问题
2013-12-24 12:56
169 查看
有如下一个数字三角形:
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
从定点出发,在每个节点可以选择向左走或者向右走,一直走到底层。试设计一种算法,计算从三角形顶端到底部的一条路径,是该路径经过的数字总和最大。
分析:这是一个动态规划问题,动态规划的思想就是在求解的过程中用到子问题,保存子问题的解,用空间换时间。
状态转移方程:tri[i][j]=tri[i][j]+max{tri[i+1][j],tri[i+1][j+1]};
其中i=n-2,n-3,...0,0<=j<=i;
代码实现:
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
从定点出发,在每个节点可以选择向左走或者向右走,一直走到底层。试设计一种算法,计算从三角形顶端到底部的一条路径,是该路径经过的数字总和最大。
分析:这是一个动态规划问题,动态规划的思想就是在求解的过程中用到子问题,保存子问题的解,用空间换时间。
状态转移方程:tri[i][j]=tri[i][j]+max{tri[i+1][j],tri[i+1][j+1]};
其中i=n-2,n-3,...0,0<=j<=i;
代码实现:
public class DynamicProgram { //数字三角形问题 private static final int NUM =100; /** * tri为数字三角形矩阵 * n为数字三角形的层 * */ public int numbertri(int[][] tri,int n){ int i ,j; for(i= n-2;i>=0;i--){ for(j=0;j<=i;j++){ if(tri[i+1][j]>tri[i+1][j+1]){ tri[i][j] += tri[i+1][j]; }else tri[i][j] +=tri[i+1][j+1]; } } return tri[0][0]; } }没有实现的问题:求出最优解路径,这是今天接下来的工作
相关文章推荐
- 动态规划之数字三角形问题
- 动态规划--数字三角形问题
- 数字三角形问题 (动态规划初步)
- 动态规划解决数字塔-数字三角形问题
- hdu 1176 免费馅饼(动态规划 数字三角形问题变形)
- 【Algothrim】 动态规划实例 (数字三角形问题)
- SDUT_数字三角形问题_动态规划
- 动态规划 问题之数字三角形(倒序递推)
- poj 1163数字三角形问题--动态规划
- 【动态规划】数字三角形问题
- 动态规划学习(1)-数字三角形问题
- sdut.acm 2012级《程序设计基础Ⅱ)》_动态规划 数字三角形问题
- 数字三角形问题--动态规划练习(1)
- 数字三角形 动态规划
- 算法基础之python实现动态规划中数字三角形和最长上升子序列问题
- 数字三角形问题
- 数字三角形问题
- 数字三角形问题
- ACM-动态规划21-三角形最长路径问题
- 蓝桥杯-动态规划-java算法训练 数字三角形