数据结构与算法分析---Java描述(第三版) 10.3.2
虽然矩阵乘法运算是不可交换的,但它是可结合的。这就意味着矩阵的乘积可以以任意顺序添加括号然后再计算其值。
例如:
给定四个矩阵ABCD。A的维数=50 X10,B的维数=10 X 40,C的维数=40 X 30,D的维数=30X5
利用书中算法核心代码模拟矩阵相乘最优顺序,代码如下:
import java.util.Random;
public class MatrixMulBestOrder {
private static int[][] sign;
private static int d[][]=new int[102][2];//d[i][0]为第i个空隙中左括号的数量,d[i][1]为第i个空隙中右括号的数量
private static final int N=10;
public static void main(String[] args) {
/*
模拟10个矩阵,行列数存储在数组c中
对于1<=i<=N,令c[i]是矩阵A(i)的列数。于是A(i)有c[i-1]行。
*/
int row,col;
int[] c=new int[N+1];//只有10个矩阵,但是创建容量为11的数组,c[0]是第一个矩阵的行数
Random random=new Random();
row