不懂逻辑的程序员 2017-10-13 08:22 采纳率: 0%
浏览 2208
已结题

求助,麻将听牌算法中的亮牌检测

有一些地方的麻将有亮牌规则(将“叫”牌亮出,让其余玩家看出我胡哪几张)
例,现有"叫"牌23456,听1,4,7。
现在需要将23456亮出来,让其余玩家知道,我听的是1,4,7。
如何在算法中检测出23456就是我要亮出的牌。
还有其余例子
1234567听1,4,7,需要亮23456
3334听2,4,5,需要亮3334
3334555听2,3,4,5,6,需要亮3334555
1112378999听1,4,6,9,需要亮1112378999
1122337788899听7,8,9,79是对对胡,8是龙七对,需要亮7788899
34456听2,5,由于胡5是卡张会加番,所以需要亮34456
............

现求助如何用算法检测出需要亮出的牌,不一定要具体的代码,有具体的思路即可
我试想过用打表,但貌似打表也不方便计算出所有的亮牌规则
希望懂的大神帮帮忙,谢 谢

  • 写回答

1条回答 默认 最新

  • Tsui丶 2017-10-16 01:12
    关注

    麻将 其实就是 一个 2+3的组合 一个对子 然后其余都是连牌 那么其实你在做算法的时候就已经做出来了呀 因为你要检测用户是否能能够胡牌了 这时候其实你已经找到 用户可以叫牌 23456 (如果说你的麻将可以乱叫,那当我没说 ,不然的话这时候你已经检测到用户可以胡1,4,7了)
    所以其实你这个问题问的有点问题呀 除非你还没解决用户什么时候可以叫牌的问题

    简而言之 就是胡牌的计算 (计算到最后当然是没胡,但是最后你只会剩下两种可能 一个连牌差一张 一个对子差一张:单牌组对子和两个对子,其中一个要成三个 ) 这种时候我们就可以跳转到另外一个判断,将连牌差一张的同花色都拿出来 计算出所有可能就是听牌的可能了

    比如:2345677 系统可能会分成 234,56,77 这时候把2345677全部拿出来算可能 就可以得到 1,4,7三种可能了 不会漏 另外一个对子差一张这种情况就更好解决了

    评论

报告相同问题?

悬赏问题

  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择