麻将,风靡大江南北,今儿让笔者和大家一起看看麻将中的算法题
中国麻将(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张同花相连的牌。注意,风牌和箭牌不能形成顺子),我们就说这手牌“听”这张牌,即拿到那张牌以后就赢了,称为“和”(