public class MatrixRecursion {
//参照老师上课写的程序.
public int minCount(int[] arrays, int i, int j, int[][] s){
int minValue=100000;
if(i==j)
return 0;
for(int k = i; k < j; k++) {
int tempValue = minCount(arrays,i,k,s) + minCount(arrays,k+1,j,s) + arrays[i-1]*arrays[k]*arrays[j];
if(tempValue < minValue){
minValue = tempValue;
s[i][j]=k;
}
}
return minValue;
}
public void traceBack(int i,int j,int[][] s){
if(i==j)
return;
traceBack(i,s[i][j],s);
traceBack(s[i][j]+1,j,s);
System.out.println("A["+i +"-"+ s[i][j] + "]" + "*A[" + s[i][j]+1 + "-" + j + "]");
}
public static void main(String[] args) {
MatrixRecursion mr = new MatrixRecursion();
int[] a={30,35,15,5,10,20,25};
int[][] s = new int[a.length][];
for(int i=0;i<6;i++)
s[i]=new int[a.length];
System.out.println(mr.minCount(a, 1, 6, s));
mr.traceBack(1, 6, s);
}
}
矩阵连乘问题
最新推荐文章于 2021-06-21 16:29:21 发布