CSDN写公式太蛋疼,所以在Word里写完截图发这。
//p 按照从左到右的顺序依次放入矩阵的长宽,例如A m*n B n*y C y*j 则p为 {m,n,y,j}
public static void matrixchainorder(ArrayList<Integer> p){
int n = p.size()-1;
int [][] m =new int[n+1][n+1];
int [][] s= new int[n][n+1];
for(int i=1;i<=n;++i){
m[i][i]=0;
}
for(int l=2;l<=n;++l) {
for (int i = 1; i <= n - l + 1; ++i) {
int j = i + l - 1;
m[i][j] = Integer.MAX_VALUE;
for(int k=i;k<=j-1;++k){
int q =m[i][k]+m[k+1][j]+p.get(i-1)*p.get(k)* p.get(j);
if(q<m[i][j]){
m[i][j]=q;
s[i][j]=k;
}
}
}
}
System.out.println(m[1][n]);
}