牛客赛题目
https://ac.nowcoder.com/acm/contest/7412/C
用递归模拟栈,其实栈的本质就是递归存取,这种方法不仅简便,而且不易错误。
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=1e5+5; string ss; ll changdu; ll i; ll cc() { ll ans=0,num=0,tmp=0; for(; i<changdu; i++) { while(ss[i]>='0'&&ss[i]<='9') tmp=tmp*10+ss[i++]-'0';//先算数字,在看字符 num*=(tmp?tmp:1); ans+=num; tmp=0; num=0; if(ss[i]>='A'&&ss[i]<='Z') num=ss[i]-'A'+1; else if(ss[i]=='(') { i++; num=cc(); //cout<<num<<endl; } else break; } ans+=num;//防止字符串最后一个为字符 return ans; } int main() { cin>>ss; changdu=ss.size(); cout<<cc()<<endl;; return 0; } **细节拉满**