#include<stdio.h>#define MAX 10void tree(int,int);int s[MAX][MAX];void main(){int m[MAX][MAX],p[MAX];int i,j,s1,k,l,q;printf("enter the size of P:");scanf("%d",&s1);printf("enter the p values:\n");for(i=0;i<=s1;i++)scanf("%d",&p[i]);for(i=0;i<=s1;i++)printf("%d",p[i]);for(i=1;i<=s1;i++){for(j=1;j<=s1;j++){m[i][j]=0;}}for(l=2;l<=s1;l++){for(i=1;i<=s1-l+1;i++){j=i+l-1;m[i][j]=100000000;for(k=i;k<=j-1;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("\nMatrix M :\n");for(l=2;l<=s1;l++) { for(i=1;i<=s1-l+1;i++) { j=i+l-1; printf(" %d ",m[i][j]); }printf("\n\n");}printf("\nMatrix S :\n ");for(l=2;l<=s1;l++) { for(i=1;i<=s1-l+1;i++) { j=i+l-1; printf(" %d ",s[i][j]); }printf("\n");}tree(i-1,j);}void tree(int x,int y){if(x==y)printf("A%d",x);else{printf("(");tree(x,s[x][y]);tree(s[x][y]+1,y);printf(")");}}
Output :

Comments
Post a Comment