Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 2

//PROGRAM FOR MATRIX CHAIN MULTIPLICATION

ALGORITHM
#include<iostream.h>
#include<conio.h>
long int M[50][50], P[50], s[50][50];
void MatrixChain(int n)
{
long int i, j, k, l, q;
for(i=1;i<=n;i++)
M[i][i]=0;
for(l=2;l<=n;l++)
{
for(i=1;i<=n-l+1;i++)
{
j=i+l-1;
M[i][j]=20000;
for(k=i;k<j;k++)
{
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 display(long int s[50][50],int i,int j)
{
if(i==j)
cout<<"A"<<i;
else
{
cout<<"(";
display(s,i,s[i][j]);
display(s,s[i][j]+1,j);
cout<<")";
}
}
void main()
{
long int n, i, j;
clrscr();
cout << "Enter the no of Matrices : ";

cin >> n;
cout << "Enter the Order Array ";
for(i=0;i<=n;i++)
{
cin >> P[i];
}
MatrixChain(n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
cout << M[i][j]<<" ";
}
cout<<"\n";
}
cout<<"\n";
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
cout << s[i][j]<<" ";
}
cout<<"\n";
}
display(s,1,n);
getch();
}

You might also like