动态规划之三角形路径求和
来源:互联网 发布:淘宝卖家钱怎么到账 编辑:程序博客网 时间:2024/06/09 18:39
是不是因为在分类首页的分类选择不恰当的原因,发现我最近的博客浏览量好少啊
对照coursera上面北京大学的算法基础那门课,把这个例题讲的特别清楚,用了不同的方法实现,特意做一下记录
package Dynamic_P;//三角形行数最多100行,每一列中的数不超过99import java.util.Scanner;public class Math_angle {public static int [][]angle;public static int n;public static int [][]Max_sum;public static void main(String args[]) {Scanner scan=new Scanner(System.in);//读入三角形的行数n=scan.nextInt();//创建一个n+1行n+1列的数组来存储构成三角形的数//并对记录最大值的数组进行初始化angle=new int[n+1][n+1];Max_sum=new int[n+1][n+1];for(int i=1;i<=n;i++) {for(int j=1;j<=i;j++) {angle[i][j]=scan.nextInt();Max_sum[i][j]=-1;}}for(int i=1;i<=n;i++)Max_sum[n][i]=angle[n][i];//int sum=function1(1,1);//int sum=function2(1,1);//int sum=function3(1,1);int sum=function4(1,1);System.out.println(sum);}//直接递归的办法,在数据量很大时会导致很大的运算量,因为重复进行了很多操作//public static int function1(int x,int y) {////如果是最下面一行的元素//int MAX;//if(x==n)//return angle[x][y];//else {//int num1=function(x+1,y);//int num2=function(x+1,y+1);//MAX=Math.max(num1, num2)+angle[x][y];//return MAX;//}//}//用一个数组记录已经被访问过的点到最底层的路径中间的和,是最常用的做法//其本质是从顶点出发向下求//public static int function2(int x,int y) {//if(Max_sum[x][y]!=-1)//return Max_sum[x][y];//else {//int num1=function2(x+1,y);//int num2=function2(x+1,y+1);//Max_sum[x][y]=Math.max(num1, num2)+angle[x][y];//}//return Max_sum[x][y];//}//直接从下往上依层遍历,直接求出每层对应位置上应当有的最大数//public static int function3(int x,int y) {//for(int i=n-1;i>=1;i--) {//for(int j=1;j<=n-1;j++) //Max_sum[i][j]=Math.max(Max_sum[i+1][j], Max_sum[i+1][j+1])+angle[i][j];//}//return Max_sum[1][1];//}//从上面的第三种方法来看,要知道第n行的Max_sum值,只需要知道第n+1行的Max_sum值,//与第n+2行的Max_sum没有关系,而一旦求出了第n行的Max_sum值,第n+1行的Max_sum值就没有意义了//根据这个理论,我们实际只需要用一个一维的数组保存Max_sum的值就行,可以节约存储空间public static int function4(int x,int y) {for(int i=n-1;i>=1;i--) {for(int j=1;j<=n-1;j++) {angle[n][j]=Math.max(angle[n][j], angle[n][j+1])+angle[i][j];}}return angle[n][1];}}
阅读全文
0 0
- 动态规划之三角形路径求和
- 动态规划--三角形最佳路径
- 动态规划之三角形
- 算法学习之动态规划--数字三角形最大路径和
- 动态规划之数字三角形
- 动态规划之数字三角形
- 动态规划之数字三角形
- 动态规划之数字三角形
- 动态规划 三角形最佳路径问题
- 动态规划 python 实现 三角形最大值路径
- 动态规划之三角形求值问题
- 算法 -- 数字三角形之动态规划
- 初探动态规划之数字三角形
- 动态规划之数字三角形问题
- 【动态规划之路径选择】
- 算法:动态规划2 数字三角形路径最短
- 动态规划-点数值三角形的最优路径搜索 java
- 动态规划练习一 21:三角形最佳路径问题
- 360春招笔试算法题题解
- Python表达式操作符及程序
- 最短路(Floyd算法)
- KeyStone DDR3 1600 Initialization
- python技巧总结
- 动态规划之三角形路径求和
- Leetcode 118 Pascal's Triangle
- 算法设计周记(三)--桶排序
- AJAX
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛: F. Overlapping Rectangles(线段树)
- Leetcode 119 Pascal's Triangle II
- Unix/Linux下静态函数库和动态函数库的制作及使用
- hadoop中map和reduce的数量设置问题
- C 语言实现增量式PID