#include<iostream.h>
#include<limits.h>
#define N 6 //连乘矩阵的个数(n-1)
int c[N][N], s[N][N], p[N];
int matrixchain(int n) //3个for循环实现
{ for(int k=1;k<=n;k++)
c[k][k]=0;
for(int d=1;d<n;d++)
for(int i=1;i<=n-d;i++)
{ int j=i+d;
c[i][j]=INT_MAX;
for(int m=i;m<j;m++)
{ int t=c[i][m]+c[m+1][j]+p[i-1]*p[m]*p[j];
if(t<c[i][j])
{ c[i][j]=t; s[i][j]=m; }
}
}
return c[1][n]; //返回矩阵连乘的结果
}
void Traceback (int i,int j,int s[][N]) //打印矩阵连乘的计算次序
{
if (i= =j) return;
Traceback (i,s[i][j],s);
Traceback (s[i][j]+1,j,s);
cout<<"Multiply A"<<i<<","<<s[i][j];
cout<<"and A"<<(s[i][j]+1)<<","<<j<<endl;
}
void main()
{
for (int i=0;i<N;i++)
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载