mahjong 麻将验胡算法开源项目

我要开发同款
匿名用户2018年04月12日
63阅读
开发技术C/C++
所属分类游戏/娱乐、休闲游戏
授权协议GPL

作品详情

1.基础的查表法

每种牌编一个id,麻将中共34种牌(编号从0-33)因此需要至少6位空间。手牌14张也就是14*6=84位。要保存和牌的全部组合约1700万种需要约84*1700*10000=175MB存储。

显然这种方式需要的内存太大,不适合应用。

2.改进的思路如下:

为了判断手牌是否胡牌,牌本身是1万,4万等等都不重要。只要知道像123一样的数字是否连续,只要有某牌个数就足够了。因此,首先对手牌进行分组,规则为将连续的牌分成一组(1万,2万,3万,5万,6万,7万就可分为两组「123」,「567」),将每个分组以个数的形式来表示,可以减少组合的数量。具体的例子如下:

「123」→「111」「567」→「111」「111」→「3」「333」→「3」「234456」→「11211」

为了完整的表示手牌,可以将不相连的分组中间用0相连,这样就可以将多个不相连的分组用一串数字进行表示了,如以上的例子,两个分组「123」,「567」就可以表示为「1110111」;

无混验和参考文档:https://hp.vector.co.jp/authors/VA046927/mjscore/mjalgorism.html

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论