首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

麻将判定的问题

问题描述: 前面去面试,需要设计一个算法检测麻将是否可以。简单描述如下:的规则为,有一个同样的两张做将,然后剩下的组成ABC或者AAA的形式。假设有13张,都是万字。...实现的代码如下: 1 package com.rampage.algorithm.base; 2 3 import java.util.ArrayList; 4 import java.util.List...,并且输出所有情况下将和听的。...13张的数组,假设都是万(如果包括其他的花色其实道理一样)。的规则为:有一个同样的两张做将,然后剩下的组成ABC或者AAA的形式。...将要的万字加进去之后,如果剩下的满足AAA或者ABC模式,则证明可以听该万字 49 for (int j=1; j<=9; j++) { 50

1.9K100
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从0到1使用Golang开发生产级麻将游戏服务器—第7篇

    三人模式大于1倍低分才可点炮(平点炮需选择)。 四人模式使用筒 条 万三种花色共108张。 玩家后,其余玩家继续游戏,直到流局或只有一位玩家未为止。...若为巴杠(已经碰后,自己摸出第四张并杠),则向每个未的玩家收取低番X1的水钱,以上两种为刮风。 若玩家为暗杠(自己摸出四张并杠),则向每个未的玩家收取低番X2的水钱,此时称为下雨。...若结算时没有,且没有叫,则刮风下雨不算。 血战到底:一家后,游戏继续进行,直到仅剩一家未或者流局。...杠上花、杠上炮、呼叫转移、抢杠 杠上花:杠后自摸,弯杠和暗杠时,其余未的玩家都会扣分 杠上炮:杠后点炮 呼叫转移:开杠后点炮,杠钱一并转移给接炮的玩家 抢杠:巴杠时的被其他人了,称为抢杠,抢杠后...中张(1番):时,不包含1/9的。 夹心五(1番):时,型可以摆成4和6夹一个5。 ?

    58110

    麻将游戏数据结构和AI算法

    1 =》无,1=》普通,2=》碰,3=》吃,4=》暗杠,5=》明杠 3、吃碰杠的临时数据构架     主要用来记录触发吃碰杠的临时数据,用动态数组记录就行,就不多啰嗦了。...有了这些基本构架,所有的和玩家手的状态就一目了然了,对于后期开发电脑的AI和游戏流程就方便多了。 客户端主要算法 0、标准判断算法     用判断基本构架,递归检查。...一副成由刻子和顺子组成,每次递归时把刻子或顺子的数量减一,最后为0时即是型。...'继续完成、杠、碰、吃等操作     (此处非常重要,过程就是,比如要别人打出的,向服务器端发送“”的要信息后,等待服务器端检查是否有其他人抢,如果没有其他人抢,才能完成过程。...这8步是标准AI的基础,其中对于七对等特殊型没有涉及,可以把电脑设定为超过4或5对时转为特殊AI。

    3.7K30

    麻将游戏的听算法

    我自己说不清就请度娘吧,听:麻将游戏术语,牌局之中,到达了「只要再凑一张即可成功」的阶段,就叫「听」,也就是说你目前的手有叫,然后听就可以快速知道你可以什么。...要知道麻将是由108张组成,其中花色分为了万、筒、条三种,每种花色有1~9的数值。麻将的方式我在这里就不再解释了,有兴趣的可以百度一下。...这样,一副手的就能完整的很直观的反应出来。除去金勾掉和小七对的型,我们的基本就可以定为:XX XXX XXX XXX XXX 其中XX代表的将,XXX则是代表三张相同或者顺子。...明白了方式以后,我们就可以开始我们的听。如果要听,就要算出所有的可能,那有108张,我们不可能都听完吧?!那效率得多低。...我们利用递归来分别处理每一种可能的情况,如果此次递归结束后剩余为0,则代表这张是我们的了。 这里给出的只是主要算法,需要的童鞋可以下载自行更改测试一下。

    2.6K160

    下围棋、打德扑算什么?AI可能很快就要学会打麻将了

    一套麻将有 144 张面上有汉字或符号(见图 1),其出牌规则、得分灵活多变。开始的时候,每个玩家都有 13 张。接下来,他们会摸牌、出牌,直到攒够 14 张可以型。...论文的第二部分介绍了很多形式化的麻将规则,包括什么是清一色,怎么样才算完整的面()等等。...定义面的组合后,我们需要一种度量方法以确定当前 14 张还有多远,这里作者引入了缺数(deficiency)。简单而言,缺数表示的就是当前面到还差多少张。 ?...我们首先需要定义根据缺完善后的完整面,然后计算缺之间的成本。 ?...清一色的 13 张 T 可以称为 nine-gate,其中我们可以向 T 中添加任意同类

    42110
    领券