版权声明:欢迎转载!拒绝抄袭. https://blog.csdn.net/qq_36257146/article/details/87716517
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
struct Node
{
int m;
int n;
};
map<char,Node>matrics;
int main()
{
int n;
char c;
Node M;
cin>>n;
for(int i = 0;i<n;i++)
{
cin>>c>>M.m>>M.n;
matrics[c] = M;
}
string s;
while(cin>>s)
{
int ans = 0;
int flag = 0;
stack<Node>ss;
for(int i = 0;i<s.length();i++)
{
if(isalpha(s[i]))
{
ss.push(matrics[s[i]]);
}
else if(s[i]==')')
{
Node b = ss.top();ss.pop();
Node a = ss.top();ss.pop();
if(a.n!=b.m)
{
flag = 1;
break;
}
ans += a.m*a.n*b.n;
a.n = b.n;
ss.push(a);
}
}
if(flag) cout<<"error"<<endl;
else cout<<ans<<endl;
}
return 0;
}
/**
9
A 50 10
B 10 20
C 20 5
D 30 35
E 35 15
F 15 5
G 5 10
H 10 20
I 20 25
A
B
C
(AA)
(AB)
(AC)
(A(BC))
((AB)C)
(((((DE)F)G)H)I)
(D(E(F(G(HI)))))
((D(EF))((GH)I))
**/