九江麻将算法列表胡牌牌型算法条目的深色背景图
牌型判定条目 · 判据与牌例同步

胡牌牌型算法:把一手牌拆得清楚、判得准

四面子一将、七对、碰碰胡、清一色搭牌,这些牌型在同一手牌里常常交叉成立。这里把每一种牌型的判定条件、拆解顺序、回溯剪枝与边界情况逐条写下来,配上对应牌例,对局结算和规则引擎都能直接对照使用。

最容易出错的地方不在牌型本身,而在将牌固定得太早、顺子刻子拆法没穷举,导致明明能胡被判成不能胡。

手牌拆解 将牌回溯 听牌枚举 七对识别

拆解演示 · 四面子一将

判定通过
1万 1万 1万 3万 4万 5万 6筒 7筒 8筒 9条 9条 9条 东 东
  1. 1编码:三十四种牌面映射为计数数组,同种牌只记张数。
  2. 2定将:遍历所有张数不少于二的牌面,逐一试作将牌。
  3. 3回溯:优先拆刻子,失败退回拆顺子,两种分支都不成立即换将。
  4. 4校验:剩余计数归零且面子数达到四组,判定成立。
1万刻子 + 345万顺子 + 678筒顺子 + 9条刻子 + 东将对
条目概况

胡牌牌型相关条目的收录规模

牌型判定是整份九江麻将算法列表里被引用最多的一类内容,下面这些数字反映当前已整理的判据、牌例与边界用例数量。

42
牌型判定条目
覆盖基本胡、七对、碰碰胡、清一色等常见分支
186
配套牌例
每条例都附上可直接摆出的十四张示例
73
边界用例
多解拆法、将牌冲突、明牌夹带等易漏判情形的记录
4
可执行步骤
编码、定将、回溯、校验,每步都有伪代码说明
判据矩阵

六类牌型分支的判定要点

同一手牌往往同时满足多条判据,整理时按拆解方式分开写,避免在实现阶段反复猜测优先级。

四面子一将

把手牌拆成四组面子加一组将对。关键在于将牌不唯一时必须逐张尝试,不能先固定再看是否成立。

基础判据回溯拆解

七对与连对

按牌面计数判断成对数量,遇到四张同牌要区分两种算法:算两对,还是按玩法规定不算对子。这条判据直接影响结论。

对子计数玩法差异

碰碰胡识别

四组面子全部为刻子或杠时成立。实现上可以在拆解通过后回看面子类型,也可以直接限定只走刻子分支。

刻子限定面子类型回看

清一色校验

先按花色分桶,若只有一种花色的牌数不为零即进入清一色分支,再按常规面子判据继续拆解。

花色分桶前置剪枝

听牌枚举

十三张手牌依次加试三十四种牌面,每次加入后调用一次胡牌校验,通过即为听口,重复结果按牌面去重。

听口集合去重处理

向听数估算

以最小换张次数为目标做逐层搜索,遇到牌型已成立直接返回负一听,用于提示与自动理牌时的排序参考。

逐层搜索性能敏感
结果对比

朴素递归与记忆化枚举的实际差别

同一副牌,写法不同会让判定结果一致但耗时相差数十倍。以下是把两种实现放在一起核对后的记录。

九江麻将算法列表胡牌牌型拆解结果对照示意图
对照项朴素递归记忆化枚举
重复牌面反复展开相同分支状态缓存后直接复用
将牌选择先固定再判定,易误判全量尝试后合并结果
明牌处理混入手牌一起回溯单独计数,减少搜索深度
单次校验耗时随牌型复杂度明显上升稳定在毫秒级以内
多解牌型只返回第一种拆法返回全部可行拆法

记忆化不等于跳过校验,而是把「剩余牌面→是否可拆完」的结果缓存起来。多解牌型仍会完整枚举,只是不再重复计算同一中间状态。

实现路径

从能判到判全的四个阶段

牌型判定条目的整理和代码落地通常是同步推进的,每个阶段解决的问题不一样。

阶段一

跑通基本胡

先让四面子一将的判定成立,用计数数组加简单回溯,能覆盖大部分普通牌型。

阶段二

补齐特殊牌型

加入七对、碰碰胡、清一色的独立判据,并明确它们与基本胡的叠加与互斥关系。

阶段三

处理多解与明牌

将牌逐张尝试,碰杠明牌单独计数,同一手牌的多种拆法全部保留,供算番环节使用。

阶段四

性能与用例固化

引入状态缓存与剪枝,把边界用例写成固定测试集,新增玩法时只需扩展分支。

近期收录

牌型判定条目的最新收录

新整理的牌型分支、判据修正与边界用例会先出现在这里,随后并入对应的条目正文。

玩法全解析:新手入门到进阶技巧

hupai algorithm 相关说明(第1部分)。hupai algorithm 相关说明(第2部分)。hupai algorithm 相关说明(第3部分)。hupai algorithm 相关说明(第4部分)。hupai algorithm 相关说明(第5部分)。hupai algorithm 相关说明(第...

爆分技巧与倍率规则说明

hupai algorithm 相关说明(第1部分)。hupai algorithm 相关说明(第2部分)。hupai algorithm 相关说明(第3部分)。hupai algorithm 相关说明(第4部分)。hupai algorithm 相关说明(第5部分)。hupai algorithm 相关说明(第...

试玩体验报告:值不值得玩

hupai algorithm 相关说明(第1部分)。hupai algorithm 相关说明(第2部分)。hupai algorithm 相关说明(第3部分)。hupai algorithm 相关说明(第4部分)。hupai algorithm 相关说明(第5部分)。hupai algorithm 相关说明(第...

规则详解:一分钟看懂怎么玩

hupai algorithm 相关说明(第1部分)。hupai algorithm 相关说明(第2部分)。hupai algorithm 相关说明(第3部分)。hupai algorithm 相关说明(第4部分)。hupai algorithm 相关说明(第5部分)。hupai algorithm 相关说明(第...

最新版下载与安装教程

hupai algorithm 相关说明(第1部分)。hupai algorithm 相关说明(第2部分)。hupai algorithm 相关说明(第3部分)。hupai algorithm 相关说明(第4部分)。hupai algorithm 相关说明(第5部分)。hupai algorithm 相关说明(第...

手机版和电脑版哪个好

hupai algorithm 相关说明(第1部分)。hupai algorithm 相关说明(第2部分)。hupai algorithm 相关说明(第3部分)。hupai algorithm 相关说明(第4部分)。hupai algorithm 相关说明(第5部分)。hupai algorithm 相关说明(第...

条目保障

每一条判据都要经得起复核

牌型判定直接决定结算结果,条目写清楚只是第一步,能被人反复核对才算完成。

判据可复核

每条牌型给出的成立条件都能用一副具体手牌验证,不含模糊表述。

牌例可对照

条目附带十四张示例牌面,照着摆出来就能看到拆解路径与最终结论。

步骤可移植

伪代码不绑定语言,编码、定将、回溯、校验四步换成任意语言都能照抄结构。

边界可测试

多解拆法、将牌冲突、明牌夹带等容易漏判的情形单独归档为测试用例。

常见卡住点

判定时最容易漏掉的三处细节

这三类问题在牌型判定里出现频率最高,排查时可以先从这里入手。

1

将牌固定得太早

有些牌面同时存在两组可作将的牌,先定其中一组会让后续面子拆不完。正确做法是逐张尝试,全部失败才算不能胡。

2

顺子跨了花色

万、筒、条三色的数字虽然相同,但不能互相组成顺子。按花色分桶后再拆,是避免此类误判最直接的方式。

3

碰杠明牌混入手牌

已经亮出的面子不计入手中牌,只需按已定面子数量减少目标组数。混在一起回溯会凭空多出若干无效分支。

快速解答

关于牌型判定的几个常见问题

以下回答均以条目正文中的判据为准,遇到地方玩法差异时会单独标注。

为什么同一手牌会出现多种拆解方式
三张相邻的牌既可以自成顺子,也可能被拆进不同的面子组合里,遇到重复牌时分支更多。因此判定要遍历所有可行拆解,不能碰到第一种组合就直接返回成立。
七对和四面子一将如何区分优先级
两套判据各自独立成立,先按地方玩法确认能否叠加计分,再决定结算顺序。工程实现上通常先做七对判定,再做面子回溯,可以减少无效递归。
听牌枚举需要试多少张牌
按常规牌池是三十四种牌面各试一次,每加入一张就触发一次胡牌校验。若玩法含癞子或可选牌池,则按可替代集合展开,并对同构结果去重。
已经碰杠的明牌要怎么处理
明牌组不进入手牌回溯,只记录已定面子数量。剩余手牌只要凑出对应数量的面子和一组将牌,即判定成立,这样能显著减少搜索深度。
性能上最容易出问题的环节是哪一步
重复拆解与无效递归。用花色分桶的计数数组做剪枝,对同构牌面记忆化,单次校验通常可以稳定在毫秒级以内。
更新订阅

牌型判据有调整时,第一时间拿到新条目

地方玩法一改,牌型判定跟着要改。把新增分支、判据修正与边界用例的通知发给你,省去反复翻旧记录的时间。

  • 新增牌型分支与拆解步骤的变动说明
  • 边界用例补充与旧条目勘误记录
  • 性能优化与缓存策略的实践补充

仅用于条目更新通知,不做其它用途。