Matrix Chain Multiplication(栈的运用)

题目大意:给出一个矩阵乘法式子,其中每个矩阵的行列已知,求最终的结果。

表达式的运算,关于栈的运用,运算过程中碰到两个不匹配的矩阵时,则矩阵序列错误。

#include<stdio.h>#include<stdlib.h>#include<string.h>int a[60][3];char b[300];int c[300][2];int top=0;int main(void){int i,n,arow,acol,brow,bcol,OK,count,j,le;scanf("%d",&n);getchar();for(i=0;i<n;i++){a[i][0]=getchar();scanf("%d%d",&a[i][1],&a[i][2]);getchar();}while(scanf("%s",b)==1){top=0;count=0;le=strlen(b);if(le==1){b[0]='\0';printf("0\n");}else{OK=1;for(i=0;i<le;i++){if(b[i]=='('){;}else if(b[i]==')'){brow=c[top][0];bcol=c[top][1];top–;arow=c[top][0];acol=c[top][1];top–;if(acol!=brow){OK=0;break;}else{count=count+(brow*arow*bcol);top++;c[top][0]=arow;c[top][1]=bcol;}}else{for(j=0;j<n;j++){if(b[i]==a[j][0]){top++;c[top][0]=a[j][1];c[top][1]=a[j][2];break;}}}}for(j=0;j<le;j++){b[j]=0;}if(OK==0){printf("error\n");}else{printf("%d\n",count);}}}return 0;}

,重新开始吧!下次我会吸取教训,不让自己犯同样的错误的;

Matrix Chain Multiplication(栈的运用)

相关文章:

你感兴趣的文章:

标签云: