2 dengzhan1987 dengzhan1987 于 2017.10.13 16:22 提问

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

有一些地方的麻将有亮牌规则(将“叫”牌亮出,让其余玩家看出我胡哪几张)
例,现有"叫"牌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个回答

qq_35728177
qq_35728177   Ds   Rxr 2017.10.16 09:12

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

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

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

qq_35728177
qq_35728177 回复不懂逻辑的程序员: 这个就是后面说的 连牌 就是同花色的所有牌计算所有可能 这样应该是能拿到所有可能的
大约 2 个月之前 回复
dengzhan1987
dengzhan1987 谢谢你的回答,什么时候能听牌,胡哪些牌我都能检测出来的。但是我检测不出哪些牌需要亮出来。
大约 2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片