24点游戏及其算法

本文详细探讨24点游戏的算法,通过数学抽象、深度优先搜索DFS进行问题分析,提出减少计算冗余的策略,给出计算流程及优化方案,并提供了示例代码链接。
摘要由CSDN通过智能技术生成

24点游戏及其算法

1.问题描述

24点是棋牌类益智游戏,要求结果等于二十四,一起来玩玩吧!这个游戏用扑克牌更容易来开展。拿一副牌,抽去大小王后(初练也可以把J/Q/K也拿去),剩下1~10这40张牌(以下用1代替A)。任意抽取4张牌(称为牌组),用加、减、乘、除(可加括号)把牌面上的数算成24。每张牌必须且只能用一次。如抽出的牌是3、8、8、9,那么算式为(9-8)×8×3=24

这里对问题进行扩展,可以输入的牌数为4~52张,其均属于一副牌,那么需要计算一串输入卡牌能否计算出24点,并且输入运算公式

2.算法分析

其实有一个很简单的方式,深度优先搜索DFS,但是这个是很无脑的。这里就不作介绍了。没啥意思

1、首先我们要对这个问题进行数学抽象。

定义1:对于有理数组成的多重集合S ,f(S) 定义如下:

如果 S 是空集或只包含一个元素,则 f(S)=S ;否则 f(S)=∪ f( ( S-{r1, r2}) ∪ {r} ) ,对于每一个 r=r1+r2 , r1-r2 , r1×r2,r1÷r2(r2≠0),且r1, r2取遍 S 中所有元素的组成的二元组。

定义1说明:要计算集合S中的元素通过四则混合运算所能得到的所有值,我们只需要任取 S 中的两个元素 r1 , r2 ,分别计算 r1 , r2 的加减乘除运算,然后用所得的结果与 S 中剩下的其他数字进行四则混合运算。只要取遍所有的 r1 ,r2 ,最后得到的所有

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值