癞子麻将胡牌算法实现

癞子麻将胡牌算法实现,第1张

概述最先实现的就是算法的实现。 需求:碰杠胡  ,不能吃 ,不能听 ,只能自摸胡,其中癞子可以做任意牌但是不能碰和杠。 写的时候还不会玩麻将,还是老板教的。^_^ 最麻烦的是胡牌算法。之前搜到的都是不包含癞子正常的胡牌,用的是%3余2,其中余数2就是余的将的意思。 但是有癞子就不能这么用了。只好自己写一个了。 一个有136张牌,万,饼,条,东西南北中发白34种牌。 有四个癞子是直接就胡牌的,最坏的情况

最先实现的就是算法的实现。

需求:碰杠胡 ,不能吃 ,不能听 ,只能自摸胡,其中癞子可以做任意牌但是不能碰和杠。

写的时候还不会玩麻将,还是老板教的。^_^

最麻烦的是胡牌算法。之前搜到的都是不包含癞子正常的胡牌,用的是%3余2,其中余数2就是余的将的意思。

但是有癞子就不能这么用了。只好自己写一个了。

一个有136张牌,万,饼,条,东西南北中发白34种牌。

有四个癞子是直接就胡牌的,最坏的情况是有3个癞子,但是如果遍历一遍不用逻辑判断就有34X34X34接近4万次.

想一下如果能胡牌,最坏的情况下是在最后一次判断能胡牌,那之前的近4万次的判断都是浪费的。

这里转变一下思维,就是有目的的按需所取成胡牌所需要的癞子个数,而不是盲目遍历再判断胡牌。

算法的正确性:如果想胡牌必然是三扑一将(正常胡牌)。其中扑指的是顺子或者三重牌(比如 一饼二饼三饼 或者东风东风东风)。将指的是两个重牌。

四种情况:

1.假如将在【万】里面那么【饼】【条】【风】(包含中发白)必然是整扑。

2.假如将在【饼】里面那么【万】【条】【风】(包含中发白)必然是整扑。

3.假如将在【条】里面那么【万】【饼】【风】(包含中发白)必然是整扑。

4.假如将在【风】里面(包含中发白)那么【万】【饼】【条】必然是整扑。

假如当前癞子的数目是curHunNum。

现在先获取【万】【饼】【条】【风】各自成为整扑所需要癞子的个数,如果是情况一。

needHunNum= 【饼】成为整扑需要癞子的个数+【条】成为整扑需要癞子的个数+【风】成为整扑需要癞子的个数;

如果hadHunNum = needHunNum - curHunNum; 如果hadHunNum<0 需求的比拥有的多 就不做判断。

否则就判断【万】中成为整扑一将需要的数目。

情况二三四依次类推。

总结

以上是内存溢出为你收集整理的癞子麻将胡牌算法实现全部内容,希望文章能够帮你解决癞子麻将胡牌算法实现所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1005815.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存