提交时间:2021-10-30 15:55:23

运行 ID: 23393

#include<bits/stdc++.h> using namespace std; int l; char b; stack<char>q; vector<char>k; int i; struct my { int sum; int num; } a[100005]; int main() { //(1,0),(3 1)=4,0 //(4,0),(1,3)=4; //(3 1),(1,3)= 3 // * + //0 0 0 //0 1 0 //0 0 1 //1 0 0 scanf("%d",&l); for(i=0; i<l; i++) { cin>>b; // if(b!='('&&b!=')') k.push_back(b); if(b=='+') { a[i].sum=1; a[i].num=3; } else { if(b=='*') { a[i].sum=3; a[i].num=1; } } } a[-1].sum=1; a[-1].num=0; for(i=0;i<k.size();i++) { if(k[i]=='+') { a[i].sum=a[i].sum*a[i-1].sum; a[i].num=a[i-1].sum*a[i].num+a[i-1].num*a[i].sum+a[i-1].num*a[i].num; } else { if(k[i]=='*') { a[i].sum=a[i-1].sum*a[i].sum+a[i-1].sum*a[i].num+a[i-1].num*a[i].sum; a[i].num=a[i-1].num*a[i].num; } } } cout<<a[k.size()-1].sum<<endl; return 0; }