用Python算24点

  1. 云栖社区>
  2. Python爱好者社区>
  3. 博客>
  4. 正文

用Python算24点

技术小能手 2018-11-19 10:49:26 浏览1310
展开阅读全文
215c8eed1961083df1118ffa330b7c7c92344f4e
小外甥女的课后作业是算24点,看了一下题目,发现都挺难的,像下面这些:
7 7 3 3
8 8 3 3
5 5 5 1
1 5 7 10
2 5 5 10
只能用加减乘除,算出24点。
发现心算不容易,于是突发奇想,用Python写了一个程序来算。
基本思路

枚举4个数字可以组成的所有的算式,找到其中等于24的式子。
对于每一个算式,我们用一棵二叉树来存取。根节点保存运算符(+,-,*,/),左子树保存运算符左侧的子算式,右子树保存运算符右侧的子算式,运算结果也存在根节点中。如下图

d518196ba25df5e072b03eaa1dea32b574e794ec

这棵二叉树对应的算式就是 (4 + 10) + (2 * 5) 。非常简单直观。
有了二叉树后,对于给定的一组数字,我们就可以递归地列出这组数字组成的所有可能的算式。
具体实现

首先定义二叉树。对于树中的每一个节点,我们用一个Node类来保存

classNode(object):




网友评论

登录后评论
0/500
评论
技术小能手
+ 关注
所属团队号: Python爱好者社区