首页
学习
活动
专区
圈层
工具
发布

麻将胡牌判定的问题

问题描述: 前面去面试,需要设计一个算法检测麻将是否可以胡牌。简单描述如下:胡牌的规则为,有一个同样的两张牌做将,然后剩下的组成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

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

    那些年,Kotlin 都截胡了哪些 Java 新特性

    那些年,Kotlin 都截胡了哪些 Java 新特性 众所周知,Kotlin被称为最好的 Java。...Kotlin 相对 Java 提供了非常多的特性,这些特性甚至截胡了某些 Java 即将推出的新特性,现在就让我们来盘点一下这些被 Kotlin “截胡” 的 Java 新特性吧… JEP 286: Local-Variable...Type Inference JEP 286: 本地变量类型推断 在 Java 10 发行,为在局部作用域的具有初始值的变量提供了自动类型推断: var list = new ArrayListJava 14 中发行,其允许一种增强的 switch 语法:使用 case … -> labels 的方式来表达分支以避免输入额外的 break; 语句;更重要的是...-> 8; WEDNESDAY -> 9; else -> 0; } JEP 355/368/378: Text Blocks JEP 378: 文本块 在 Java

    1.1K20

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

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

    73710

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

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

    4.1K30

    麻将游戏的听牌算法

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

    3.1K160

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

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

    49110
    领券