zoukankan      html  css  js  c++  java
  • luogu P1449 后缀表达式 x

    题目描述

    所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。

    如:3*(5–2)+7对应的后缀表达式为:3.5.2.-*7.+@。’@’为表达式的结束符号。‘.’为操作数的结束符号。

    输入输出格式

    输入格式:

    输入:后缀表达式

    输出格式:

    输出:表达式的值

    输入输出样例

    输入样例#1:
    3.5.2.-*7.+@
    输出样例#1:
    16

    说明

    字符串长度,1000内。

    思路:

      如题目所述,’@’为表达式的结束符号,‘.’为操作数的结束符号.

      所以最后一定是用'@'做结尾的,然后又因为读入的时候是从0开始读入,而i又是从0开始进行,所以i最终循环到strlen(s)-2即可[s-1的话是字符串最后'@'的下标,我们不考虑他,所以-2]

      然后其他的就用后缀表达式的方法去做就好.

    代码酱来也~

    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<cstdlib>
    
    using namespace std;
    
    char c[2560];
    int stt[1111];
    
    int st(char c[2560])
    {
        int i=0,top=0,x;
        while(i<=strlen(c)-2)
        {
            switch(c[i])
            {
                case '+':
                    ///先弹出顶端的数,将顶端下方的数,更改为弹出的数与其之和
                    /*
                    top--;
                    stt[top]=stt[top+1]+stt[top];
                    ///stt[top+1]是刚刚弹出来的最顶端的数
                    ///以下的各种均能够这样写,只是更改一下符号而已 
                    */ 
                    stt[--top]+=stt[top+1];
                    break;
                case '-':
                    stt[--top]-=stt[top+1];
                    break;
                case '*':
                    stt[--top]*=stt[top+1];
                    break;
                case '/':
                    stt[--top]/=stt[top+1];
                    break;
                default:
                    x=0;
                    while(c[i]!='.')
                    ///从题目中得知,'.'是操作数的结束标志,
                    ///所以如果不是'.'以及各种符号就是操作的数字 
                        x=x*10+c[i]-'0',i++;///有可能是多位数 
                    stt[++top]=x;///入栈 
                    break;
            }
            i++;///继续操作下一字符 
        }
        return stt[top];///最后返回最终结果 
    }
    
    int main()
    {
        gets(c);
        printf("%d",st(c));
        return 0;
    }

    End.

    如果运气好也是错,那我倒愿意错上加错!

    ❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀

  • 相关阅读:
    Flask 服务器设置host=0.0.0.0之后外部仍然无法访问
    HTB::Sauna
    VulnHub::DC-4
    【CTFHub 技能树】RCE
    【CTFHub 技能树】反射型XSS
    VulnHub::DC-3
    HashMap中add()方法的源码学习
    equals和HashCode深入理解(转)
    AQS原理分析
    初步认识线程安全性
  • 原文地址:https://www.cnblogs.com/zxqxwnngztxx/p/6627293.html
Copyright © 2011-2022 走看看