矩阵链相乘问题:给定n个矩阵的链<A1,A2,A3……,An>,矩阵Ai的规模为p(i-1)*pi(1<=i<=n),求完全括号化方案,使得计算乘积A1,A2,A3……An所需标量乘法次数最少。
我们通过分析可以得到如下一个最小代价括号化方案的递归求解公式:
m[i][j]=0 如果i=j
m[i][j]=min{m[i][k]+m[k+1][j]+p(i-1)pkpj} (i<=k<j) 如果i<j
其中p(i-1)pkpj的含义是:
实现代码如下:
#include <stdio.h>
#include <limits.h>
struct Matrix{
int row;
int column;
};
typedef struct Matrix Matrix;
void doMatrixChainOrder(Matrix chain[],int M[][6],int S[][6]){
int i,j,k,l,n=6,q;
for(k=1;k<n;k++){
for(i=0;i<n-k;i++){
j=i+k;
M[i][j]=INT_MAX;
for(l=i;l<j;l++)