说说算法题的那些事儿(3)~麻将算法题

本文探讨了麻将算法题,分析了如何判断一副13张的麻将牌是否听牌。通过递归方法,选取将牌并尝试组合成刻子或顺子,从而确定听牌的可能性。文章提供了一种使用34维向量表示牌的状态,并避免重复枚举的解决方案。
摘要由CSDN通过智能技术生成

麻将,风靡大江南北,今儿让笔者和大家一起看看麻将中的算法题

中国麻将(Chinese Mahjong, UVa 11210)
麻将是一个中国原创的4人玩的游戏。这个游戏有很多变种,但本题只考虑一种有136张牌的玩法。

这136张牌所包含的内容如下。
饼(筒)牌:每张牌包括一系列点,每个点代表一个铜钱,如图所示。本题中用1T、2T、3T、4T、5T、6T、7T、8T、9T表示。

这里写图片描述

索(条)牌:每张牌由一系列竹棍组成,每根棍代表一挂铜钱,如图所示。本题中用1S、2S、3S、4S、5S、6S、7S、8S、9S表示
这里写图片描述

万牌:每张牌代表一万枚铜钱,如图所示。本题中用1W、2W、3W、4W、5W、6W、7W、8W、9W表示。
这里写图片描述

风牌:东、南、西、北风,如图所示。本题中用DONG、NAN、XI、BEI表示。
这里写图片描述
箭牌:中、发、白,如图所示。本题中用ZHONG、FA、BAI表示
这里写图片描述

总共有9×3+4+3=34种牌,每种4张,一共有136张牌。
其实麻将中还有如图所示的8张花牌,所以共有136 + 8 = 144张牌,但是本题中不予考虑。
这里写图片描述

中国麻将的规则十分复杂,本题中只需考虑部分规则。在本题中,手牌(即每个人手里的牌)总是有13张。如果多了某张牌以后,整副牌可以拆成一个将(两张相同的牌)、0个或多个刻子(3张相同的牌)和0个或多个顺子(3张同花相连的牌。注意,风牌和箭牌不能形成顺子),我们就说这手牌“听”这张牌,即拿到那张牌以后就赢了,称为“和”(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值