牛客赛题目
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;
}
**细节拉满**
京公网安备 11010502036488号