专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档
VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档
VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档
付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档
共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。
先大致介绍一下麻将规则:
各地的麻将有各自的特色规则上有许多差异。
麻将牌有条子、筒子、万子分别从1到9各4张。
一条、二条、...九条
一筒、二筒、...九筒
一万、二万、...九万
"东南西北中发白"字牌各4张
有的麻将还有花牌"春夏秋冬梅兰竹菊"各1张
玩家有一手牌3n+1张(n为0,1,2...)根据13张麻将和16张麻将的玩法n的上限不同,分别为4和5一手牌再加上别家打出的一张牌或者自己摸进的一張牌,组成3n+2张牌可以判断是否胡牌
基本牌型分为刻、顺、杠、将。
顺是3张同一花色连号的条子、筒子或万子
杠是4张同样的牌(由于杠牌时会补一张牌,所以玩家手牌数量仍然是3n+1张)
吃牌是取上家打出的牌和自己的牌组成顺
碰牌是取别家打出的牌和自己的牌组成刻。
杠牌是取别家打出的牌或者自己摸到的牌和自己的牌组成杠
吃碰的玩家不摸牌,但仍然需要打出一张
杠牌的玩家需要补一张牌,并仍然需要打出一张
麻将一般4人围成一桌,分为东南西北四家轮流做庄。游戏开始各自初始拿到一样数目的牌(13张麻将拿13张16张麻将拿16张)。从上局赢家开始摸牌摸一张牌打一张牌。只有下家可以吃上家打出的牌任何玩家都可以碰(或者杠)其他玩家打出的牌。
在游戏中玩家需要想办法使得牌型成为某一种胡牌的类型。
要胡牌一般需要配成一将搭配若干个刻或者顺。(也有其他特殊类型的胡牌不同類型胡牌有翻(或者台)的累积。翻数越高赢得越多)
百搭麻将是一种有趣的变种。许多麻将玩法中都有百搭牌的玩法游戏开始时一般通过骰子确定某张牌是百搭牌。百搭牌可以根据需要替代任何牌参与组合但百搭牌不允许被打出。
现在需要大家写一个函数判断玩家否满足胡牌条件
为了简化判断,牌只出现条子、筒子、万子和字牌并且牌数保证是3n+2张(手牌+1张牌),其中0<=n<=5预先吃、碰、杠的牌均鈈需要考虑。胡牌只判断3n+2张牌是否满足一将搭配若干个刻或者顺不需要计算翻(或者台数)。当有3张或4张百搭牌时也直接算胡。
当牌A被选择为百搭牌时白板(0x90)就转为代替A牌。可以参与刻、顺、将的组合注意白板本身也可能会被选中为百搭牌。调用时白板已经被转为百搭牌本身的牌,所以除非白板本身是百搭否则参数中不会出现0x90。
pai数组内保存了count个牌(已经按编码由小到大排序)
TestHu函数需要返回true表示牌型可以胡牌否则返回false
baida是被选中的百搭牌。
0x00, 0x11, baida = 0x11胡牌,将百搭归位(它配为它本身的牌,注意这里的0x10其实本来是白板)
百搭规则参考温州麻将我家这边百搭规则和它不一样,不过这个规则相对我家这边的百搭规则容易一些
最后扯一下麻将游戏消遣可以,赌博就不好了
參考资料: 第33次编程比赛第2题 — 编程爱好者论坛 bbs....