ACM:搜索算法专题(1)——24点

题目描述:
     给定4个数字,判定这4个数字是否可以通过运算得到结果24。运算操作包括:加、减、乘、除,允许变换数字的顺序,允许使用括号改变运算顺序。
    即:判定是否存在一种通过在下面的圆圈中添加运算符以及添加括号的方式使得等式成立:
           
a ○ b ○ c ○ d = 24
    例:数字 5, 5, 5, 1 可以通过运算得到结果24: 
            5 × (5 - 1 ÷ 5) = 24
        数字 9, 9, 9, 9 则无论通过怎样的运算都无法得到24的结果。

解答:
    本题还是比较简单的,由于数据量比较少,因此可以采用暴力搜索的方式进行解答,枚举所有的可能的运算方式,如果有1种方案可以达到24,则表明给定的数据有解,否则无解。
    枚举的方式如下:
    由于加法和乘法满足交换律,而减法和出发则不满足,这里我们添加两种运算:“反减”和“反除”,分别记作 ~- 和 ~÷,此时:
                        a ~-  b = b -  a
                        a ~÷ b = b ÷ a
    添加这两种运算操作后,就使得减法和除法也同样符合交换律。此时,所有情况的运算顺序就只有两种情况,用※表示任意的运算符,则两种运算顺序为:
        ((a 
※ b) 
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值