对于一个表达式的完整定义如下:
#include <bits/stdc++.h>
#define LL long long
using namespace std;
char s[10005];
int n, tot=1;
int bds(int &tot);
int yz(int &tot){
if(s[tot]=='('){
//++ (
int ans=bds(++tot);
}
else{
int ans=0;
while(s[tot]<='9'&&s[tot]>='0'){
ans=ans*10+s[tot]-'0';
tot++;
}
return ans;
}
}
int xiang(int &tot){
int ans=yz(tot);
bool vis=true;
while(vis){
char op=s[tot];
if(op=='*'||op=='/'){
//++ 运算符号
int s1=yz(++tot);
if(op=='*'){
ans*=s1;
}
else{
ans/=s1;
}
}
else{
vis=false;
}
}
return ans;
}
int bds(int &tot){
int ans=xiang(tot);
bool vis=true;
while(vis){
char op=s[tot];
if(op=='+'||op=='-'){
//++ 运算符号
int s1=xiang(++tot);
if(op=='+'){
ans+=s1;
}
else{
ans-=s1;
}
}
else {
vis=false;
tot++;//++ )
}
}
return ans;
}
int main(){
scanf("%s", s+1);
n=strlen(s+1);
printf("%d\n", bds(tot));
return 0;
}