Javascript实现24点游戏

本文介绍了如何使用JavaScript实现24点游戏。重点强调了不允许使用一元负号和数字连接,以及总共的运算可能性。算法思路是通过递归的方式对剩余数字进行四种运算操作,考虑了运算的顺序和交换律的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Javascript实现24点游戏

 你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24

注意:

1.除法运算符 / 表示实数除法,而不是整数除法。例如 4 / (1 - 2/3) = 12 ;
2. 每个运算符对两个数进行运算。特别是我们不能用 - 作为一元运算符。例如,[1, 1, 1, 1] 作为输入时,表达式 -1 - 1 - 1 - 1 是不允许的;
3. 你不能将数字连接在一起。例如,输入为 [1, 2, 1, 2] 时,不能写成 12 + 12 ;

思路和算法

只有 4 张牌,且只能执行 4 种操作。即使所有运算符都不进行交换,最多也只有 12 * 6 * 2 * 4 * 4 * 4 = 921612∗6∗2∗4∗4∗4=9216 种可能性,这使得我们可以尝试所有这些可能。具体来说,我们有 12 种方式先选出两个数字(有序),并执行 4 种操作之一(12 * 4)。然后,剩下 3 个数字,我们从中选择 2 个并执行 4 种操作之一(6 * 4)。最后我们剩下两个数字,并在 2 * 4 种可能之中作出最终选择。

我们将对我们的数字或结果数字执行 3 次二元运算(+, -, *, / 是运算)。因为 - 和 / 不满足交换律,我们必须仔细考虑 a / b 和 b / a。

对于在我们的列表中移除 a, b 这两个数字的每一种方法,以及它们可能产生的每种结果,如 a + b、a / b等,我们将采用递归的方法解决这个较小的数字列表上的问题

let arr = [4, 1, 8, 7];
let judePoint24 = (arr) => {
   
   
	if(arr.length == 0) return false;
	if(arr.length 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值