矩阵链相乘

来源:互联网 发布:java语言程序设计基础 编辑:程序博客网 时间:2024/06/06 05:27

同样是家喻户晓的一个动态规划问题,题目我就不叙述了,不清楚的朋友可以看算法设计p135页算法7.2

package oj;/** *  * @author pc *矩阵链乘法,a[n+1]用来表示各个矩阵的规模,其中若t<n,则a[t]表示t+1号矩阵的行数,若t=n,则a[t]表示第n个矩阵的列数 */public class MATCHAIN {public static int matChain(int[] a,int n){int[][] b=new int[n+1][n+1];for(int i=0;i<n+1;i++){b[0][i]=0;}for(int i=0;i<n+1;i++){b[i][0]=0;}for(int i=1;i<=n;i++){b[i][i]=0;}int j;for(int d=1;d<=n-1;d++){for(int i=1;i<=n-d;i++){j=i+d;b[i][j]=999;for(int k=i+1;k<=j;k++){int temp=b[i][k-1]+b[k][j]+a[i-1]*a[k-1]*a[j];b[i][j]=b[i][j]<temp?b[i][j]:temp;}}}return b[1][n];}public static void main(String args[]){int[] a={5,10,4,6,10,2};System.out.println(matChain(a,5));}}


0 0
原创粉丝点击