python 24点程序_怎样实现一个计算24点的程序?

最直接的思路就是穷举。

4 个数,加减乘除四个运算符,做穷举,这个是很简单的事:四个数的全排列,四个运算符选三个的全排列。

关键是加括号怎么穷举。那么加括号的核心是啥呢?其实,加括号就是整数拆分!

1 = 1

2 = 1 + 1

3 = 1 + 1 + 1

= 1 + 2

= 2 + 1

4 = 1 + 1 + 1 + 1

= 1 + 1 + 2

= 1 + 2 + 1

= 2 + 1 + 1

= 1 + 3

= 3 + 1

以上是 4 以内的整数的拆分结果。

然后,对于运算式中所有大于 1 的运算数,递归做整数拆分,并且在拆分结果上加括号,直到所有的运算数都为 1 为止。

因此,4 的拆分结果如下:

4 = 1 + 1 + 1 + 1

= 1 + 1 + (1 + 1)

= 1 + (1 + 1) + 1

= (1 + 1) + 1 + 1

= 1 + (1 + 1 + 1)

= 1 + (1 + (1 + 1))

= 1 + ((1 + 1) + 1)

= (1 + 1 + 1) + 1

= (1 + (1 + 1)) + 1

= ((1 + 1) + 1) + 1

一共有 10 种加括号的形式(不加括号也算一种)。

另外,由于 4 个数字可能有相等的,用以上方式穷举出的结果会有重复,需要去重。

再考虑到运算符的交换律、结合律,导致一些括号加了没有意义,这可以用规则做简化。

以上。思路已提供,程序实现略。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值