3 条题解

  • 1
    @ 2023-11-18 15:15:00

    2.0完美版

    #include<iostream>
    #include<cstdio> 
    #include<stack> 
    using namespace std;
    stack<int>num;
    int m,n,sum;
    int main(){
        char ch;
        while(ch!='@'){
            ch=getchar();
            switch(ch){
                case'.':
                    num.push(sum);
                    sum=0;
                    break;
                case'+':
                    m=num.top();
                    num.pop();
                    n=num.top();
                    num.pop();
                    num.push(n+m);
                    break;
                case'-':
                    m=num.top();
                    num.pop();
                    n=num.top();
                    num.pop();
                    num.push(n-m);
                    break;
                case'*':
                    m=num.top();
                    num.pop();
                    n=num.top();
                    num.pop();
                    num.push(n*m);
                    break;
                case'/':
                    m=num.top();
                    num.pop();
                    n=num.top();
                    num.pop();
                    num.push(n/m);
                    break;
                default:
                    sum=sum*10+(ch-'0');
                    break;
            }
        }
        cout<<num.top()<<endl;
        return 0;
    }
    
    • 1
      @ 2023-11-18 15:10:43
      #include <iostream>
      #include <cstdio> 
      #include <stack> 
      using namespace std;
      stack <int> num;
      int m, n, sum;
      int main() {
          char ch;
          while(ch != '@') {
              ch = getchar();
              switch(ch) {
                  case '.':
                      num.push(sum);
                      sum = 0;
                      break;
                  case '+':
                      m = num.top();
                      num.pop();
                      n = num.top();
                      num.pop();
                      num.push(n + m);
                      break;
                  case '-':
                      m = num.top();
                      num.pop();
                      n = num.top();
                      num.pop();
                      num.push(n - m);
                      break;
                  case '*':
                      m = num.top();
                      num.pop();
                      n = num.top();
                      num.pop();
                      num.push(n * m);
                      break;
                  case '/':
                      m = num.top();
                      num.pop();
                      n = num.top();
                      num.pop();
                      num.push(n / m);
                      break;
                  default:
                      sum = sum * 10 + (ch - '0');
                      break;
              }
          }
          cout<<num.top()<<endl;
          return 0;
      }
      
      • -2
        @ 2022-7-3 22:50:02

        后缀表达式,经典模版题。

        直接上代码!

        #include<iostream> 
        #include<cstdio>
        #include<cstring>
        #include<stack> 
        using namespace std;
        char s[1000];
        int main(){
        	gets(s);
        	int n = strlen(s), x = 0, tmp;
        	stack <int> a;
        	for(int i = 0; i < n-1; i++)
        	{
        		switch(s[i]){
        		case '.' :
        			a.push(x);
        			x = 0;
        			break;
        		case '+' : 
        			tmp = a.top(); a.pop();
        			a.top() += tmp;
        			break;
        		case '-' :
        			tmp = a.top(); a.pop();
        			a.top() -= tmp;
        			break;
        		case '*' :
        			tmp = a.top(); a.pop();
        			a.top() *= tmp;
        			break;
        		case '/' :
        			tmp = a.top(); a.pop();
        			a.top() /= tmp;
        			break;
        		default:
        			x = x * 10 + s[i] - '0';
        		}
        	}
        	printf("%d", a.top());
        	return 0;
        }
        

        https://www.luogu.com.cn/record/78364318

        (本人完隐,看不到记录)

        • 1

        信息

        ID
        448
        时间
        1000ms
        内存
        125MiB
        难度
        2
        标签
        递交数
        18
        已通过
        12
        上传者