zoukankan      html  css  js  c++  java
  • 【模板】表达式求值

    代码如下

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn=1010;
    stack<int> num;
    stack<char> ops;
    char s[maxn];
    inline int grade(char s){return s=='('?1:s=='+'||s=='-'?2:3;}
    inline void calc(char op){
    	int x=num.top();num.pop();
    	int y=num.top();num.pop();
    	if(op=='+')num.push(x+y);
    	else if(op=='-')num.push(x-y);
    	else if(op=='*')num.push(x*y);
    	else num.push(x/y);
    }
    int solve(char *s){
    	int val=0;
    	for(int i=1;i<=strlen(s+1);i++){
    		if(isdigit(s[i])){
    			val=val*10+s[i]-'0';
    			if(isdigit(s[i+1]))continue;
    			num.push(val);val=0;
    		}else if(s[i]=='(')ops.push(s[i]);
    		else if(s[i]==')'){
    			while(ops.top()!='(')calc(ops.top()),ops.pop();
    			ops.pop();
    		}else{
    			while(ops.size()&&grade(ops.top())>=grade(s[i]))calc(ops.top()),ops.pop();
    			ops.push(s[i]);
    		}
    	}
    	while(ops.size())calc(ops.top()),ops.pop();
    	return num.top();
    }
    int main(){
    	scanf("%s",s+1);
    	printf("%d
    ",solve(s));
    	return 0;
    }
    
  • 相关阅读:
    大数据技术
    大数据技术
    大数据技术
    设计模式之代理模式
    大数据技术
    大数据技术
    大数据技术
    Intellij IDEA 解决 Maven 依赖下载慢的问题
    大数据技术
    QUdpSocket Class
  • 原文地址:https://www.cnblogs.com/wzj-xhjbk/p/9787686.html
Copyright © 2011-2022 走看看