每日一题(13)——24点 (分治&递归)

本文介绍了一种使用分治法解决24点游戏的方法。通过将4个数进行排列组合,并利用四则运算,递归地将问题规模降低到3个数,最后计算所有可能的组合以找到结果为24的解。文中还提到了穷举法和分支限界法,并提供了简单的伪代码。虽然给出了作者自己尝试的实现,但建议读者参考更优秀的解决方案。
摘要由CSDN通过智能技术生成

问题描述:

    给玩家4张牌,每张面值1~13,采用+-、*、/以及括号,使其最终结果为24

解答:

1.穷举法

每个数只能使用一次,所以对4个数进行全排列共有4!=24种排列;

需要3个四则运算符号:4^3=64种;

加括号方式:(A(B(CD))), ((A(BC))D), ((AB)(CD)), (A((BC)D))), (((AB)C)D) 5种

共有:4! * 4^3 * 5 = 7680种;

 

2.分治法

假定集合A={1,2,3,4},首先任意取出两个数,如去除1,2,A=A - {1,2},进行不同的四则运算,1+2=3,1-2=-1, 1*2=2, 1/2=0.5, 将结果再分别加入集合A,可得:

B={3,3,4}, C={-1,3,4}, D={2,3,4}, E

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值