简易麻将平胡算法

本文介绍了麻将平胡的计算方法,包括检查手牌数量、识别三牌和对子、组合三牌并验证胡牌条件,以及测试和分析胡牌牌型。
摘要由CSDN通过智能技术生成

一、平胡简介

麻将平胡牌(无财神):N(0、1、2、3、4)个三牌和1个对子,手牌总数为 N * 3 + 2。


二、平胡计算

1、先检测手牌数量是否符合要求。

2、获得可能的三牌集(三连[1, 2, 3]、三同[1, 1, 1])和对子集(对子[1, 1])。

3、使用组合函数,获得所有可能的三牌组合集,每个组合包括N个三牌。

4、若无三牌组合,则是单调平胡,则直接遍历对子集,若有对子在手牌中数量足够,则可胡牌。

5、若有三牌组合,遍历三牌组合集,若三牌组合集中所有的三牌都在手牌中数量足够,再遍历对子集,若有对子在手牌中数量足够,则可胡牌。


三、测试函数

测试函数中的arr的下标为麻将牌唯一标志,值为该麻将牌数量。

#define LEN 34		// 万(0 - 8)、条(9 - 17)、筒(18 - 26)、东南西北中发白(27 - 33) 

enum GROUP_TYPE
{
	GROUP_GANG,
	GROUP_LIAN,
	GROUP_PENG,
	GROUP_PAIR
};

struct CardGroup
{
	int card;
	GROUP_TYPE type;
};

int main(int argc, char *argv[])
{
	int arr[LEN] = {0};
	arr[0] = 2;
	finishCard(ar
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值