栈的应用
#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<string.h>
using namespace std;
struct Node
{
int mults;
int row;
int col;
};
char str[1000];
int pos;
int flag;
int rows[30];
int cols[30];
char s[10];
Node get_M()
{
Node t;
if(str[pos]=='(')
{
Node t1,t2;
pos++;
t1=get_M();
t2=get_M();
pos++;
if(t1.col!=t2.row)
{
flag=false;
}
t.row=t1.row;
t.col=t2.col;
t.mults=t1.mults+t2.mults+t1.row*t1.col*t2.col;
}
else
{
t.row=rows[str[pos]-'A'];
t.col=cols[str[pos]-'A'];
t.mults=0;
pos++;
}
return t;
}
int main()
{
int n;
int u,v;
scanf("%d",&n);
while(n--)
{
scanf("%s%d%d",&s,&u,&v);
rows[s[0]-'A']=u;
cols[s[0]-'A']=v;
}
while(scanf("%s",&str)!=EOF)
{
pos=0;
flag=true;
Node t=get_M();
if(!flag) printf("error\n");
else printf("%d\n",t.mults);
}
return 0;
}