CSP认证201903-2 二十四点

该博客介绍了CSP认证中关于二十四点问题的解题方法。通过使用两个栈,分别存储操作数和运算符,根据运算符优先级进行运算。当遇到数字时,将其入栈;遇到运算符时,根据优先级决定是否入栈或进行运算。若扫描完毕仍有运算符栈未清空,需继续弹出运算符进行运算,直至栈空。
摘要由CSDN通过智能技术生成

CSP认证201903-2 二十四点

可以看到,这个问题就是简单的表达式求值,而且只有4个数,没有括号,可以用栈很简单的解决

步骤说明:

  1. 使用两个栈,一个保存操作数,一个保存运算符。
  2. 扫描表达式字符串,如果是数字,则将数字入栈。
  3. 如果是运算符,则需要看优先级;如果这是第一个运算符或者这个运算符的优先级比栈顶的运算符的优先级更高,则将这个运算符入栈。
  4. 如果扫描到一个运算符A,运算符A的优先级不大于栈顶的运算符top的优先级,则将top弹出,然后弹出两个操作数进行运算,将结果入栈,最后将运算符A压入栈中。
  5. 如果字符串扫描完毕,但是运算符栈仍然不空,则弹出一个运算符,弹出两个操作数,运算后将结果入栈,循环操作,直至运算符栈为空。

总结步骤

  1. 扫描到数字入栈
  2. 扫描到操作符,一定会入栈,入站之前判断是否需要弹出栈顶的操作符。
  3. 扫描完毕,清空(弹出一个运算符,弹出两个操作数)操作符栈

    #include <iostream>
    using namespace std;
    
    class Op{
        private:
            char op;//运
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值