https://www.acwing.com/problem/content/3305/
1 #include<iostream> 2 #include<cstring> 3 #include<string> 4 #include<unordered_map> 5 #include<stack> 6 using namespace std; 7 stack<int> num; 8 stack<char> op; 9 void eval(){ 10 auto b=num.top(); num.pop(); 11 auto a=num.top(); num.pop(); 12 auto c=op.top(); op.pop(); 13 int x; 14 if(c=='+') x=a+b; 15 else if(c=='-') x=a-b; 16 else if(c=='*') x=a*b; 17 else if(c=='/') x=a/b; 18 num.push(x); 19 } 20 int main(void){ 21 unordered_map<char,int> pro{{'+',1},{'-',1},{'*',2},{'/',2}}; 22 string str; 23 cin>>str; 24 for(int i=0;i<str.size();i++){ 25 auto c=str[i]; 26 if(isdigit(c)){ 27 int x=0; 28 int j=i; 29 while(j<str.size()&&isdigit(str[j])){ 30 x=x*10+str[j]-'0'; 31 j++; 32 } 33 i=j-1; 34 num.push(x); 35 }else if(c=='('){ 36 op.push('('); 37 }else if(c==')'){ 38 while(op.top()!='(') eval(); 39 op.pop(); 40 }else{ 41 while(op.size()&&pro[op.top()]>=pro[c]) eval(); 42 op.push(c); 43 } 44 } 45 while(op.size()) eval(); 46 cout<<num.top()<<endl; 47 return 0; 48 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端