Type Here to Get Search Results !

To perform Matrix Chain Multiplication


#include<stdio.h>

#include<conio.h>

#define MAX 15

#define INF 4294967295

int num,p[MAX+1],n;

void print(int [][MAX],int,int);

void matrixchainorder();

void setdata();

void printorder();

void print(int s[MAX][MAX],int i,int j)

{

if(i==j)

else

{

}

}

printf("A%d",num++);

printf("(");

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

printf(" x ");

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

printf(" ) ");

void matrixchainorder()

{

unsigned int q;

unsigned long m[MAX][MAX]={0};

int s[MAX][MAX]={0};

int l,j,i,k;

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

for(i=1;i<=n-l+1;i++)

{

j=i+l-1;

m[i][j]=INF;

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;

}

}

}

printf("Number of Multiplications are %d ",m[1][n]);

num=1;

printf("Order of Multiplication is: ");

print(s,1,n);

}

void setdata()

{

int i;

printf("\nEnter number of matrices: ");

scanf("%d",&n);

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

{

printf("Enter %d matrix size:",i);

scanf("%d%d",&p[i-1],&p[i]);

}

}

void printorder()

{

int i,j;

matrixchainorder();

}

void main()

{

setdata();

printorder();

}

Output:

Enter number of matrices: 3

Enter 1 matrix size:2 2

Enter 2 matrix size:2 3

Enter 3 matrix size:3 2

Number of Multiplications are 20 Order of Multiplication is: (A1 x (A2 x A3 ) )

Post a Comment

0 Comments
* Please Don't Spam Here. All the Comments are Reviewed by Admin.

Featured post

M

M