同样是家喻户晓的一个动态规划问题,题目我就不叙述了,不清楚的朋友可以看算法设计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));
}
}