麻将胡牌算法思路(任意赖子)

4 篇文章 0 订阅

看网上算法穷举,枚举,剔除特殊情况等等很乱,感觉还是写一套通用的逻辑比较好。

这个算法前后修改了几次,最终在三星s4这种老的安卓机上计算一次时间在0.04s左右。

总体思路:首先需要一对将牌,剩下的牌任意组合,都组成顺子或者坎牌就可以胡牌了。

发完牌,手牌13张,要胡牌的话是14张,我们插入一张赖子牌。

每张牌都可能做为将牌,就算只有一张,还有一张赖子牌可以组成将牌,我们先遍历麻将牌列表,每张牌(非赖子)都做将牌算一次,把将牌拿出去,剩下的再任意组合,看是否能组成顺子或者坎牌。

我是用了递归,组成了三张就把组成的三张牌拿掉,剩下的牌继续递归,直到所有牌都组完,中间如果不能组成顺子或者坎牌,我们需要拿赖子牌补上,同时记录了我们补的牌是什么,最终判断手里的赖子牌等于我们补牌需要的赖子牌数,那么说明可以胡牌,返回可以胡和可以胡的牌,如果是小于则是任意胡。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值