当前位置: 代码迷 >> 综合 >> Matrix Chain Multiplication UVA - 442
  详细解决方案

Matrix Chain Multiplication UVA - 442

热度:121   发布时间:2023-10-13 14:36:06.0

问题类型:STL-Stack

03pie’s solution for [UVA-442]:
问题链接

#include<iostream> 
#include<stack>
#include<cstring>
#inlcude<cstdio>using namespace std;struct Matrix{int a,b;Matrix(int a=0,int b=0):a(a),b(b) {}
}m[26];stack<Matrix> s;int main(){int n;cin>>n;for(int i=0;i<n;i++){string name;cin>>name;int k=name[0]-'A';cin>>m[k].a>>m[k].b;} string expr;while(cin>>expr){int len=expr.length();bool error=false;int ans=0;for(int i=0;i<len;i++){if(isalpha(expr[i]))    s.push(m[expr[i]-'A']);else if(expr[i]==')'){Matrix m2=s.top(); s.pop();Matrix m1=s.top(); s.pop();if(m1.b!=m2.a){error=true;break;}ans+=m1.a*m1.b*m2.b;s.push(Matrix(m1.a,m2.b));}}if(error)   printf("error\n");else printf("%d\n",ans);}return 0;
}
  相关解决方案