斗地主残局破解大全求破解

《好看》依托百度技术,精准推荐优质短视频内容,懂你所好,量身打造最适合你的短视频客户端!地主:大王,小王,JJ,999
  农民:AAAA,对10,单7、6、5、4,3333
  另一个农民:已经没有战斗力了,所以忽略,不予考虑
  规则:双方都是明牌,农民先出,不准3带2,其余规则和QQ上一样。3带1.顺子都允许的。
  结果。农民先出,要农民赢
  我个人以及看很多网友评论,最有可能的一种出法就是,
  农民:A
  地主:小王
  地主:J
  农民:A
  地主:大王
  农民:3333
  农民剩下4、5、6、7、10、10、A、A
  地主剩下9、9、9、J
  可是这里算下去还是农民输
  求高智商DOTAER答疑解惑啊
主帖获得的天涯分:0
楼主发言:1次 发图:0张 | 更多
  地主必赢。。。。多少年前的牌局了。。。。
  我也觉得地主必赢,貌似没有什么解法,网上的解答出的都没考虑所有情况
  我个人以及看很多网友评论,最有可能的一种出法就是,  农民:A  地主:小王  地主:J  农民:A  地主:大王  农民:3333  农民剩下4、5、6、7、10、10、A、A  地主剩下9、9、9、J  可是这里算下去还是农民输  求高智商DOTAER答疑解惑啊   .....................................................  这得多SB的地主才能这么出啊
  农民出34567,地主出炸弹,地主出J或999 J,农民出A或AAAA,农民出AAA 10或333 10  
  农民出34567必赢。傻逼地主不要可以4带2对,地主要只能王炸。。看地主怎么出。咋出都是农民赢了
  @君子易演  16:13:11  农民出34567必赢。傻逼地主不要可以4带2对,地主要只能王炸。。看地主怎么出。咋出都是农民赢了  -----------------------------  你34567 后,我地主不要,你再出4个1带2个10
,两王炸了你,你剩3个3,你还怎么赢?
  凭什么不许3带2?  我地主我就3带2.我就王炸3带2走了。
  多么简单呵 按那种规则 肯定是农民赢
  SB啊!
农民肯定赢啊!  先出一个A, 地主怎么出? 地主怎么出都是输。如果地主不出,打个 3 4 5 6 7,地主炸了也输,地主剩个三带一和一张单牌,农民还有AAA呢。 不炸也输。自己想去吧。  如果出个A,地主拆了王,那就轮到地主出牌了,不是楼上TM的说的::农民出个A,地主小王,再出一个,地主大王。
打地一个A地主要了的话,轮地主出的。  这么简单的牌。真是服了
  @成熟未满丶
15:55:09  SB啊! 农民肯定赢啊!  先出一个A, 地主怎么出? 地主怎么出都是输。如果地主不出,打个 3 4 5 6 7,地主炸了也输,地主剩个三带一和一张单牌,农民还有AAA呢。 不炸也输。自己想去吧。  如果出个A,地主拆了王,那就轮到地主出牌了,不是楼上TM的说的::农民出个A,地主小王,再出一个,地主大王。 打地一个A地主要了的话,轮地主出的。  这么简单的牌。真是服了  -----------------------------  你没看清楼主分析的吗?农民出A,地主拆王,然后地主出J,农民出A,地主再出个王,然后农民只能炸,这时候就出现楼主说的最后的牌局,还是地主赢,这个牌局农民不可能赢
  @JP男的C
16:06:26  @成熟未满丶
15:55:09  SB啊! 农民肯定赢啊!  先出一个A, 地主怎么出? 地主怎么出都是输。如果地主不出,打个 3 4 5 6 7,地主炸了也输,地主剩个三带一和一张单牌,农民还有AAA呢。 不炸也输。自己想去吧。  如果出个A,地主拆了王,那就轮到地主出牌了,不是楼上TM的说的::农民出个A,地主小王,再出一个,地主大王。 打地一个A地主要了的话,...........  -----------------------------  我和同事刚研究了 是赢不了
  学习了,不断研究学习不断提高进步
  @飘若山
10:57:39  凭什么不许3带2?  我地主我就3带2.我就王炸3带2走了。  -----------------------------  你地主不要,我还出4带,肯定出对10!傻逼
  以本人的水平看,农民没法赢。不能出J以下的单张和对,不能出小于999的三带一,不能把AAAA拆到AA,完全不成
  我怎么看着那么容易?  首先  农民:A  地主:小王  地主:J  农民:不出  这个时候  农民剩下、6、7、10、10、A、A A  地主剩下9、9、9、J
大王  这个时候地主出牌 ,要是出大王.农民四张3就炸下去.  农民4
地主9 农民A  农民5
地主9 农民A  家民6
地主9 家民A  最后农民剩下一对10和7 地主剩下一条J 打一双就赢了  如果地主是出999 J的话
农民 拿AAA 10 压上去 之后34567 再333 10就赢了
  我个人以及看很多网友评论,最有可能的一种出法就是,  农民:A  地主:小王  地主:J  农民:A  地主:大王  农民:3333  农民剩下4、5、6、7、10、10、A、A  地主剩下9、9、9、J  可是这里算下去还是农民输  求高智商DOTAER答疑解惑啊   LZ说得很清楚了,这是出法不是残局啊~
  @泰V山
01:52:29  我怎么看着那么容易?  首先  农民:A  地主:小王  地主:J  农民:不出  这个时候  农民剩下、6、7、10、10、A、A A  地主剩下9、9、9、J 大王  这个时候地主出牌 ,要是出大王.农民四张3就炸下去.  农民4 地主9 农民A  农民5 地主9 农民A  家民6 地主9 家民A  最后农民剩下一对10和7 地主剩下一条J 打一双就赢了  如果地主是出999 J的话 农民 拿AAA 10 压上去 之后34567 再333 10就赢了  -----------------------------  是这样吗?如果地主小王以后,农民不要,地主继续出J呢,农民是拆A还是炸掉,一,拆A,地主大王,农民3333炸,这时地主剩999,农民有4567四张小单且无三带一,定输。
二,3333炸掉,地主剩大王999,农民剩4567四张小单对10和AAA,也是定输
  农民先出四个三带456.就赢了,这么简单啊  
  @luo12-2-21 11:38:00  地主:大王,小王,JJ,999  农民:AAAA,对10,单7、6、5、4,3333  另一个农民:已经没有战斗力了,所以忽略,不予考虑  规则:双方都是明牌,农民先出,不准3带2,其余规则和QQ上一样。3带1.顺子都允许的。  结果。农民先出,要农民赢......  -----------------------------  农民剩下4、5、6、7、10、10、A、A  地主剩下9、9、9、J  都到了这一步,农民还不赢????
  lz你有点微慢…
  回复第18楼,@topspeed  @泰V山
01:52:29  我怎么看着那么容易?  首先  农民:A  地主:小王  地主:J  农民:不出  这个时候  农民剩下、6、7、10、10、A、A A  地主剩下9、9、9、J 大王  这个时候地主出牌 ,要是出大王.农民四张3就炸下去.  农民4 地主9 农民A  农民5 地主9 农民A  家民6 地主9 家民A  最后农民剩下一对10和7 地主剩下一条J 打一双就赢了  如果地主是出999 J的话 农民 拿AAA 10 压上去 之后34567 再333 10就赢了  -----------------------------  是这样吗?如果地主小王以后,农民不要,地主继续出J呢,农民是拆A还是炸掉,一,拆A,地主大王,农民3333炸,这时地主剩999,农民有4567四张小单且无三带一,定输。 ...  --------------------------  分析的有道理,这牌地主应该是赢了,不过是不是应该看看另外一个农民的牌啊  
  仔细研究下
  农民 34567 地主炸不炸都输。  农民 AAAA 10 10 99 可以4个A带两对的。
  地主:大王,小王,JJ,999   农民:AAAA,对10,单7、6、5、4,3333   不管农民怎么出,地主一王炸,再999带JJ,都是赢,另一家就算有2222加
KKKK还是输  没哪个SB地主去拆牌吧
  要多脑残才能说出农民可以赢啊
  @伴霞骄阳 25楼
16:58:37  地主:大王,小王,JJ,999  农民:AAAA,对10,单7、6、5、4,3333  不管农民怎么出,地主一王炸,再999带JJ,都是赢,另一家就算有2222加 KKKK还是输  没哪个SB地主去拆牌吧  -----------------------------  你认真看了吗? 已经说了 不可以三带二
  @chen楼
16:39:24  农民 34567 地主炸不炸都输。  农民 AAAA 10 10 99 可以4个A带两对的。  -----------------------------  你认真看了吗?  农民是:AAAA,对10,单7、6、5、4,3333   哪来的对9   3 4 5 6 被你吃了?
  先出顺子34567不行吗?
  @泰V山 16楼
01:52  我怎么看着那么容易?  首先  农民:A  地主:小王  地主:J  农民:不出  这个时候  农民剩下、6、7、10、10、A、A A  地主剩下9、9、9、J
大王  这个时候地主出牌 ,要是出大王.农民四张3就炸下去.  农民4
地主9 农民A  农民5
地主9 农民A  家民6
地主9 家民A  最后农民剩下一对10和7 地主剩下一条J 打一双就赢了  如果地主是出999 J的话
农民 拿AAA 10 压上去 之后34567 再3……  -----------------------------要是地主在出一张J是不是农民就输了  
  @luo 规则如下:  1:可以炸,但三个只能带一,不能带双。  2:农民先出牌。  3:请问农民怎么才能赢??(双方明牌,都可以看到对方的牌,另一个农民一手废牌,不做考虑)求高手赐教!灰常感谢据说这副斗地主牌引起了很大的争议,考考童鞋智商!规则如下:  1:可以炸,但三个只能带一,不能带双。  2:农民先出牌。  3:请问农民怎么才能赢??(双方明牌,都可以看到对方的牌,另一个农民一手废牌,不做考虑)  【注意】:开局看好规则说明!  农民:4567(剩 AAAA)  地主:炸与不炸 出与不出 【直接掏钱吧】  别跟我喷,游戏有游戏的规则。愿赌服输,规则白纸黑字写着,没规定顺子要几张!
  @lzq楼
16:19  @luo 规则如下:  1:可以炸,但三个只能带一,不能带双。  2:农民先出牌。  3:请问农民怎么才能赢??(双方明牌,都可以看到对方的牌,另一个农民一手废牌,不做考虑)求高手赐教!灰常感谢据说这副斗地主牌引起了很大的争议,考考童鞋智商!规则如下:  1:可以炸,但三个只能带一,不能带双。  2:农民先出牌。  3:请问农民怎么才能赢??(双方明牌,都可以看到对方的牌,另一个农民一手废牌,不........  ------------------------------  出对10 农民赢。
  www.113youxi.com
11:38:00  地主:大王,小王,JJ,999   农民:AAAA,对10,单7、6、5、4,3333   另一个农民:已经没有战斗力了,所以忽略,不予考虑   规则:双方都是明牌,农民先出,不准3带2,其余规则和QQ上一样。3带1.顺子都允许的。   结果。农民先出,要农民赢   我个人以及看很多网友评论,最有可能的一种出法就是,   农民:A   地主:小王   地主:J   —————————————————  这还不简单,农民先出34567,地主如炸,再怎么出地主也是死,如出对j,农民主炸,地主出单j,农民也炸,然后农民出对10,只要农民先出顺,农民怎么都营  
  @泰V山 16楼
01:52  我怎么看着那么容易?  首先  农民:A  地主:小王  地主:J  农民:不出  这个时候  农民剩下、6、7、10、10、A、A A  地主剩下9、9、9、J
大王  这个时候地主出牌 ,要是出大王.农民四张3就炸下去.  农民4
地主9 农民A  农民5
地主9 农民A  家民6
地主9 家民A  最后农民剩下一对10和7 地主剩下一条J 打一双就赢了  如果地主是出999 J的话
农民 拿AAA 10 压上去 之后34567 再3……  -----------------------------  
  @泰V山 16楼
01:52  我怎么看着那么容易?  首先  农民:A  地主:小王  地主:J  农民:不出  这个时候  农民剩下、6、7、10、10、A、A A  地主剩下9、9、9、J
大王  这个时候地主出牌 ,要是出大王.农民四张3就炸下去.  农民4
地主9 农民A  农民5
地主9 农民A  家民6
地主9 家民A  最后农民剩下一对10和7 地主剩下一条J 打一双就赢了  如果地主是出999 J的话
农民 拿AAA 10 压上去 之后34567 再3……  -----------------------------  地主出J农民不要,为什么要出大王,可以再出一个J,就剩下999大王了,地主赢  
  @君子易演 5楼
16:13  农民出34567必赢。傻逼地主不要可以4带2对,地主要只能王炸。。看地主怎么出。咋出都是农民赢了  -----------------------------  
  @chen楼
16:39  农民 34567 地主炸不炸都输。  农民 AAAA 10 10 99 可以4个A带两对的。你才输呢!你出34567地主不打你打什么呢  -----------------------------  
  我只能说农民包赢!!  
  @annatotti3 20楼
16:01  @luo12-2-21 11:38:00  地主:大王,小王,JJ,999  农民:AAAA,对10,单7、6、5、4,3333  另一个农民:已经没有战斗力了,所以忽略,不予考虑  规则:双方都是明牌,农民先出,不准3带2,其余规则和QQ上一样。3带1.顺子都允许的。  结果。农民先出,要农民赢......  -----------------------------  农民剩下4、5、6、7、10、10、A、A  地主剩下9、9、9、J  都到了……  -----------------------------  
  @泰V山
01:52:29  我怎么看着那么容易?  首先  农民:A  地主:小王  地主:J  农民:不出  这个时候  农民剩下、6、7、10、10、A、A A  地主剩下9、9、9、J
大王  这个时候地主出牌 ,要是出大王.农民四张3就炸下去.  农民4
地主9 农民A  农民5
地主9 农民A  家民6
地主9 家民A  最后农民剩下一对10和7 地主剩下一条J 打一双就赢了  如果地主是出999 J的话
农民 拿AAA 10 压上去 之......  -----------------------------  农民:A  地主:小王  地主:J  农民:不出  这个时候  地主再出J
  农民不要地主直接3个9带个王 赢了  农民要是拆A也是输
  @君子易演 5楼
16:13  农民出34567必赢。傻逼地主不要可以4带2对,地主要只能王炸。。看地主怎么出。咋出都是农民赢了  -----------------------------  @屁事啊 37楼
20:26  ------------------------------
  @lzq楼
16:19  @luo 规则如下:  1:可以炸,但三个只能带一,不能带双。  2:农民先出牌。  3:请问农民怎么才能赢??(双方明牌,都可以看到对方的牌,另一个农民一手废牌,不做考虑)求高手赐教!灰常感谢据说这副斗地主牌引起了很大的争议,考考童鞋智商!规则如下:  1:可以炸,但三个只能带一,不能带双。  2:农民先出牌。  3:请问农民怎么才能赢??(双方明牌,都可以看到对方的牌,另一个农民一手废牌,不做考虑)  【注意】:开局看好规则说明!  农民:4567(剩3……  -----------------------------  
  @lzq楼
16:19  @luo 规则如下:  1:可以炸,但三个只能带一,不能带双。  2:农民先出牌。  3:请问农民怎么才能赢??(双方明牌,都可以看到对方的牌,另一个农民一手废牌,不做考虑)求高手赐教!灰常感谢据说这副斗地主牌引起了很大的争议,考考童鞋智商!规则如下:  1:可以炸,但三个只能带一,不能带双。  2:农民先出牌。  3:请问农民怎么才能赢??(双方明牌,都可以看到对方的牌,另一个农民一手废牌,不做考虑)  【注意】:开局看好规则说明!  农民:4567(剩3……  -----------------------------  
  @taochao110 44楼
23:05  @lzq楼
16:19  @luo 规则如下:  1:可以炸,但三个只能带一,不能带双。  2:农民先出牌。  3:请问农民怎么才能赢??(双方明牌,都可以看到对方的牌,另一个农民一手废牌,不做考虑)求高手赐教!灰常感谢据说这副斗地主牌引起了很大的争议,考考童鞋智商!规则如下:  1:可以炸,但三个只能带一,不能带双。  2:农民先出牌。  3:请问农民怎么才能赢??(双方明牌,都可以看到对方的牌,另一个农民一手废牌,不……  -----------------------------我还说对花就是飞机可以炸,你怎么算?  
  农民先出34567
  棋牌 求虐 www.huangjiaguoj.com
  农民:A地主:不大打输,小王 农民:不打 地主:J农民:不打 地主:出三带一必输,只能出大王 农民:四个三下面单出就赢了  
  上面已经有人说了答案了,看规则。如果规则允许四张带两个对子,那农民一定赢。
  @泰V山 16楼
01:52  我怎么看着那么容易?  首先  农民:A  地主:小王  地主:J  农民:不出  这个时候  农民剩下、6、7、10、10、A、A A  地主剩下9、9、9、J
大王  这个时候地主出牌 ,要是出大王.农民四张3就炸下去.  农民4
地主9 农民A  农民5
地主9 农民A  家民6
地主9 家民A  最后农民剩下一对10和7 地主剩下一条J 打一双就赢了  如果地主是出999 J的话
农民 拿AAA 10 压上去 之后34567 再3……  -----------------------------  
  地主不可能输,农民不出两个A就不要,出了两个A或以上就王炸必赢,说农民能赢的你们智商是硬伤。  
  一、只要智商足够,农民是必赢的;  二、农民第一步不是出单A的话,必输;  三、剩下的不说了,自己去研究吧
使用“←”“→”快捷翻页
请遵守言论规则,不得违反国家法律法规回复(Ctrl+Enter)查看: 3292|回复: 123
地摊斗地主残局 求高手破解
主题帖子积分
高二, 积分 22619, 距离下一级还需 2381 积分
高二, 积分 22619, 距离下一级还需 2381 积分
A B斗地主,A先出。
不容许三带一 ,
三带二 或者 三带一对。
容许三个一起出!
最后的赢家到底是谁?
001416vokxoro7c24xa424.jpg (59.36 KB, 下载次数: 3)
00:14 上传
乐清发传单大王 老刘
主题帖子积分
高二, 积分 22619, 距离下一级还需 2381 积分
高二, 积分 22619, 距离下一级还需 2381 积分
这位子自己留着
乐清发传单大王 老刘
主题帖子积分
大班, 积分 118, 距离下一级还需 82 积分
大班, 积分 118, 距离下一级还需 82 积分
主题帖子积分
斗地主好玩吗
主题帖子积分
我不怎么打牌
主题帖子积分
小四, 积分 4966, 距离下一级还需 34 积分
小四, 积分 4966, 距离下一级还需 34 积分
主题帖子积分
初一, 积分 7033, 距离下一级还需 967 积分
初一, 积分 7033, 距离下一级还需 967 积分
A赢 就是A赢
乐清发传单大王 柳市老刘
主题帖子积分
小一, 积分 208, 距离下一级还需 292 积分
小一, 积分 208, 距离下一级还需 292 积分
主题帖子积分
小二, 积分 637, 距离下一级还需 2363 积分
小二, 积分 637, 距离下一级还需 2363 积分
玩多大的吗
主题帖子积分
小二, 积分 637, 距离下一级还需 2363 积分
小二, 积分 637, 距离下一级还需 2363 积分
我也喜欢玩
Powered by相信大家都玩过斗地主,规则就不再介绍了。
直接上一张朋友圈看到的残局图:
这道题我刚看到时,曾尝试用手工来破解,每次都以为找到了农民的必胜策略时,最后都发现其实农民跑不掉。由于手工破解无法穷尽所有可能性,所以这道题究竟农民有没有妙手跑掉呢,只能通过代码来帮助我们运算了。
本文将简要讲述怎么通过代码来求解此类问题,在最后会公布残局的最后结果,并开源代码以供大家吐槽。
代码的核心思想是minimax。minimax可以拆解为两部分,mini和max,分别是最小和最大的意思。
直观的理解是什么呢?就有点像A、B两个人下棋。A现在可以在N个点走棋,假设A在某个点走棋了,使得A的这一步的盘面评估分数最高;但是轮到B下的时候,就一定会朝着让A最不利的方向走,使得A的下一步必然按照B设定的轨迹来,而没法达到A在第一步时估算到这一步的最高盘面评分。
在牌局中是一样的,如果农民的一手牌,让地主无论如何应对都不能赢的话,那么可以说农民有必胜策略;否则,农民必输。
我们可以用一个函数hand_out来模拟一个人的出牌过程。在现实生活中,一个人想要出牌的话,必然需要知道自己手上的所有牌:me_pokers,也需要知道上一手的出的牌:last_hand。如果我们要用这个函数来模拟两个人的出牌,则还需要知道对手当前的所有牌:enemy_pokers。
这个函数的返回值,是轮到我me_pokers出牌时,是否能够必赢牌。如果能赢则返回真,否则返回假。
def hand_out(me_pokers, enemy_pokers, last_hand)
假设轮到我出牌时,如果我手上的牌都出完了,那么我将立刻知道我赢了;反之如果对手的牌都出完了,而我没有,则我失败了。
因为现在轮到我出牌,所以我首先需要知道我现在能出的所有手牌组合。注意:这个组合中,包括过牌(即不出牌)的策略。
all_hands = get_all_hands(me_pokers)
现在我们要对所有可能的手牌组合进行遍历。
首先我需要知道,上一手对方出的牌是什么。
如果对方上一手选择过牌,或者没有上一手牌,那么我这一轮必须不能过牌,但是我可以出任意的牌
如果对手上一手出了牌,则我必须要出一个比它更大的牌或者选择这一轮直接过牌(不出牌)
关键点来了,在出完我的牌或选择过牌后,我们需要用一个递归调用来模拟对手下一步的行为。如果对手的下一次出牌不能获胜的话,则我这一次的出牌必胜;否则,对于我的每一个出牌选择,对手都能获胜的话,则我必败。
全部代码如下:
以上核心逻辑理清楚后,构建破解器将变得十分简单。
首先,我们要用数字来表示牌的大小,这里我们用3表示3,11来表示J,12表示Q,依次类推……
其次,我们需要求出一个手牌的所有出牌组合,这里需要get_all_hands函数,具体实现比较繁琐但是很简单,就不在此赘述。
然后,我们还需要一个牌力判断函数can_comb2_beat_comb1(comb1, comb2),这个函数用于比较两组手牌的牌力,看是否comb2可以击败comb1。唯一需要注意的一点,在斗地主的规则中,除了炸弹外,其他所有牌力均等,只有牌型一样时才能去比较。
最后,我们需要一个模拟出牌函数make_hand(pokers, hand),用于求出在手牌为pokers的情况下打出一手牌hand后,剩下的手牌,实现也非常简单,只需简单的移除掉那些打出的牌即可。
由于一副牌的可能手牌巨大,导致递归的分支数巨大。所以时间开销非常大,为阶乘级O(N!),根据斯特林公式,大约为O(N^N)。
由于可能会有很多重复的牌面出现,导致了很多重复的递归调用。所以加一个缓存能极大提升效率。
即对我方手牌和敌方手牌和上一轮手牌的描述(str(me_pokers)+str(enemy_pokers)+str(last_hand))为键,将求出的结果存进缓存字典中。下一次遇到相同的局面时,即可直接从缓存字典中取出,而无需再次重复计算。时间复杂度优化为指数级O(C^N)。
代码运算出来的结果是,农民没有必胜策略。换言之,只要地主会玩,农民不可能赢。阶级固化已经如斯了么……
阅读(...) 评论()爱卡汽车_中国领先的汽车主题社区、汽车资讯、汽车论坛中心

我要回帖

更多关于 街头斗地主残局破解 的文章

 

随机推荐