矩阵连乘
设 A1,A2,…,An为矩阵序列,Ai 为 Pi-1*Pi阶矩阵,i=1,2,…,n。试确定矩阵的乘法顺序,使得元素相乘的总次数最少。
算法步骤
第一步: 遍历所有结果得出备忘录。为了避免重复计算,我们可以按照矩阵的长度来分类计算,先计算长度为1的矩阵(不需要乘直接全部记为0),在以此递增计算长度为2,3…的矩阵乘法次数,记录最优值。
第二步: 依据备忘录,递归得出最优乘法序列。
# include<iostream>
using namespace std;
//-------------------
struct L{
int A[7][7];
int i;
char B[50];
};
void matrixChain(int *p,L* s,L* m,int len)
{
int n=len-1;
for(int i=1;i<=n;i++)
{
m->A[i][i]=0;
s->A[i][i]=0;
}
for(