腾讯课堂视频讲解:https://ke.qq.com/course/360581?tuin=104cb0e2
1、 基于查表的lua版跑胡子判胡算法
将所有能胡的牌型和其对应的胡息放入表中
判断胡牌时,只需要查表得到胡息,如果表中没有此项,则不能胡,如果有,得到表中的胡息,加上跑、提、碰、偎的胡息,如果大于最低胡息,就能判断是否胡牌。
代码:https://github.com/yuanfengyun/qipai/tree/master/phzlib_lua
优点:速度极快
缺点:表会占用一定内存,如果用字符串存储,有60M左右,如果用二进制,则是20M
2、基于回溯的c语言版
1、去除不能拆解的坎
2、拆解小牌 分别深度拆解为顺子、小小大的绞、大大小的绞、二七十,小牌拆解完后,拆解大牌
3、拆解剩余胡大牌,大牌只需要去除 贰柒拾后,按顺子拆解就行
4、如果不能完成拆解,则不能胡
5、获取最大的小牌和大牌胡息和,然后加上坎的胡息、跑、提、碰、偎的胡息,如果能达到最低胡息,则胡了。
代码:https://github.com/yuanfengyun/qipai/tree/master/phzlib_c