您的位置:首页 > 其它

矩阵链乘法

2014-01-18 16:49 295 查看
#include "stdafx.h"

#include <iostream>

using namespace std;

void matrixchainorder(int *p,int(*m)[10],int(*s)[10],int length)

{

int n =length-1;

for(int i=1;i<=n;i++)

m[i][i]=0;

for(int l=2;l<=n;l++)

for(int i=1;i<=n-l+1;i++) //从i开始的l个矩阵如何划分最优

{

int j=i+l-1;

m[i][j]=0x7fffffff;

for(int k=i;k<=j-1;k++)

{

int q= m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j];

if (q<m[i][j])

{

m[i][j]=q;

s[i][j]=k;

}

}

}

}

void printanwser(int(*s)[10],int i,int j)

{

if(i==j)

cout<<"A"<<i;

else

{

cout<<"(";

printanwser(s,i,s[i][j]);

printanwser(s,s[i][j]+1,j);

cout<<")";

}

}

int _tmain(int argc, _TCHAR* argv[])

{

int p[7]={30,35,15,5,10,20,25};

int m[10][10],s[10][10];

matrixchainorder(p,m,s,7);

printanwser(s,1,6);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: