用Python算24点
小外甥女的课后作业是算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的式子。 对于每一个算式,我们用一棵二叉树来存取。根节点保存运算符(+,-,*,/),左子树保存运算符左侧的子算式,右子树保存运算符右侧的子算式,运算结果也存在根节点中。如下图 这棵二叉树对应的算式就是 (4 + 10) + (2 * 5) 。非常简单直观。 有了二叉树后,对于给定的一组数字,我们就可以递归地列出这组数字组成的所有可能的算式。 具体实现 首先定义二叉树。对于树中的每一个节点,我们用一个Node类来保存 class Node (object):
