← 回到文章

矩阵连乘

【代码】
#include  
#include  
#define N 100 
int m[N][N]; //m[i][j]表示从第i个矩阵连乘到第j个矩阵的最小计算次数 
int s[N][N]; //第i个矩阵连乘到第j个矩阵时在何处断开,用于构造最优解 
int p[N];    //表示矩阵i为p[i-1]×p[i] 
  
void MatrixChain(int n) 
{ 
       int i,j,k,t,r; 
       for(i=1;i<=n;i++) 
              m[i][i]=0; 
       for(r=2;r<=n;r++) 
       { 
              for(i=1;i<=n-r+1;i++) 
              { 
                     j=i+r-1; 
                     m[i][j]=m[i+1][j]+p[i-1]*p[i]*p[j]; 
                     s[i][j]=i; 
                     for(k=i+1;k
最后更新于 2009-08-31 21:19:06