UVa - 442 - Matrix Chain Multiplication(用栈实现简单的表达式解析)

来源:互联网 发布:小姐威客信息网 源码 编辑:程序博客网 时间:2024/05/20 01:11





#include<cctype>#include<cstdio>#include<string>#include<iostream> #include<stack>using namespace std;struct Matrix{int a,b;//Matrix(int a=0,int b=0):a(a),b(b){}//Matrix(int a,int b){//this.a=a;//this.b=b;//}}m[26];int main(){//freopen("input.txt","r",stdin);int n;string s;stack<Matrix>st;cin>>n;while(n--){cin>>s;int k = s[0]-'A';cin>>m[k].a>>m[k].b;}while(cin>>s){int len = s.length();int ans = 0;int error = 0;for(int i=0 ;i<len ;i++){if(isalpha(s[i])){st.push(m[s[i]-'A']);}if(s[i]==')'){Matrix m2 = st.top();st.pop();Matrix m1 = st.top();st.pop();//Matrix m3 = Matrix(m1.a,m2.b);Matrix m3;m3.a=m1.a;m3.b=m2.b;if(m1.b!=m2.a){error=1;break;}st.push(m3);ans += m1.a*m1.b*m2.b;}}if(error)printf("error\n");elseprintf("%d\n",ans);}return 0;}




0 0
原创粉丝点击