算法实践篇-多矩阵乘法最优次序-动态规划
来源:互联网 发布:文华财经模拟软件 编辑:程序博客网 时间:2024/06/06 18:56
package com.dynamic;public class MatrixChainMultiple {private int[][]size;private int [][]momery;private int [][]s;public MatrixChainMultiple(int [][]size)throws Exception{for(int i=0;i<size.length-1;i++){if(size[i][1]!=size[i+1][0]){throw new Exception("size错误");}}this.size=size;momery=new int[size.length][size.length];for(int i=0;i<momery.length;i++){momery[i][i]=0;}s=new int[size.length][size.length];}public int matrixChainOrder(){return innerMatrixChainOrder(0,size.length-1);}private int innerMatrixChainOrder(int i,int j){if(i==j||momery[i][j]>0){return momery[i][j];}int tmp=Integer.MAX_VALUE;for(int k=i;k<j;k++){int q=innerMatrixChainOrder(i,k)+innerMatrixChainOrder(k+1,j)+size[i][0]*size[k][1]*size[j][1];//tmp=Math.min(tmp, innerMatrixChainOrder(i,k)+innerMatrixChainOrder(k+1,j)+size[i][0]*size[k][1]*size[j][1]);if(q<tmp){tmp=q;s[i][j]=k;}}momery[i][j]=tmp;return tmp;}public void printSolution(){printSolution(0,size.length-1);}private void printSolution(int i,int j){if(i==j){System.out.print("A"+i);}else{System.out.print("(");printSolution(i,s[i][j]);printSolution(s[i][j]+1,j);System.out.print(")");}}public static void main(String[] args)throws Exception {int [][]size=new int[][]{{30,35},{35,15},{15,5},{5,10},{10,20},{20,25}};MatrixChainMultiple chain=new MatrixChainMultiple(size);System.out.println(chain.matrixChainOrder());chain.printSolution();}}
0 0
- 算法实践篇-多矩阵乘法最优次序-动态规划
- 矩阵连乘最优次序 c++实现 动态规划算法
- 动态规划--寻找最佳矩阵乘法次序
- 《数据结构与算法分析》动态规划--矩阵乘法最优顺序、最优二叉查找树详解
- 算法实践-最优搜索树-动态规划
- 动态规划--矩阵连乘的最优乘法顺序
- 算法导论 动态规划 矩阵链乘法
- 动态规划算法之矩阵链乘法
- 动态规划算法之矩阵链式乘法
- 动态规划算法——矩阵乘法的顺序安排
- 【算法导论】动态规划之矩阵链乘法
- 【算法导论】动态规划之“矩阵链乘法”问题
- 算法导论第15章 动态规划-矩阵链乘法
- 算法导论--动态规划(矩阵链乘法)
- 算法导论-动态规划之矩阵链乘法
- 算法导论 第15章 动态规划:矩阵链乘法
- 动态规划 矩阵链乘法
- 动态规划 矩阵链乘法
- 深入了解HDMI接口
- 北风网群号汇总
- 安装oracle即时客户端
- Python的zip函数
- 图像处理与计算机视觉:基础,经典以及最近发展(1)序
- 算法实践篇-多矩阵乘法最优次序-动态规划
- dreamweaver总是过期
- crash文件转译
- jni中jboolean数据截取问题
- word去除页眉横线
- Javascrpit mvc 简单的增添删除查找
- Linux线程属性总结
- 过滤器与拦截器的区别
- C# 关于抽象