问题:给定n个矩阵{A1,A2,……An},其中Ai与Ai+1是可乘的,i=1,2,……n-1。如何能确定计算矩阵连乘乘积的计算次序,使得一次次序矩阵连乘需要的数乘次数最少。
要求:给定n个矩阵构成的序列{A1,A2,……,An},对乘积A1,A2,……,An,找出最小化乘法次数的加括号方法。
1.建立递归关系,确定矩阵连乘的最优子结构
代码:
//计算该连乘式子的最佳结合方式
int MatrixChain(vector<int>& p,int beg, int end)
{
if(m[beg][end]>0)
{
return m[beg][end];
}
if(beg==end)
return 0;
int u = MatrixChain(p,beg,beg) +MatrixChain(p,beg+1,end)+p[beg-1]*p[beg]*p[end];
s[beg][end] = beg;
for (int K = beg+1; K <end ; K++)
{
int t &