扫雷怎么玩问题 谁能解

怎么解_扫雷吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:13,115贴子:
真不知道这些武器要是放...
呵呵哒,解完一波就返场...
念成绩,讲试卷啦~\(≧▽≦...
全名《我们仍未记得那天...
神牛摄影器材--为专业摄影者打造,你值得拥有!
中间1上面那个不是雷
贴吧热议榜
使用签名档&&
保存至快速回贴游戏扫雷的玩法技巧详解(附图)_运动攻略_运动知识_运动信息_百度攻略
相关攻略推荐
当前位置: > 文章阅读页
经典游戏:扫雷的技巧攻略 高级最快不到70秒,中级20秒精彩内容,尽在百度攻略:扫雷有一点很重要的原则就是不是把所有的雷都找出来,而是把所有无雷区都打开。根据这一点,尽量少标旗,多用左键点无雷区,只有说这片形势比较复杂,需要用双键来破开时标上核心的雷就行了,尤其是形势比较明朗的时候一定不要标旗,周围的无雷区已经全开了就更不要浪费时间标旗了,这样会快很多。一、来自知乎:精彩内容,尽在百度攻略:首先,你必须接受扫雷是一款拼人品的游戏,想要驾驭它你需要有充足的耐心。1、你经常需要重复开始游戏多次,来获得一个可以继续玩下去的局面。而每个局面的难度(一般以3BV来衡量,即可完成游戏的最小点击数)是随机的,碰到较难的局面你会举步维艰,碰到较容易的局面则一帆风顺。想要破自己的记录往往需要一个好局,这需要不断的重复、重复再重复,,,,2、无论是初级、中级或是高级,猜雷(在已知的局面中完全无法判断的情况,只能碰运气)都是必不可少的一个环节。一般来说,完成一盘高级游戏平均需要猜雷3~5次甚至更多。如果你对概率有些概念的话就会知道每猜一次,完成本局的概率就减少一倍。因此多次重复开始换来的一个貌似不错的局面,只有很小的机率可以最终完成。作为高级玩家为了追求速度和连贯性,往往会放弃远处的可判断情况而就近猜雷,这就使完成一局的概率进一步降低。事实上我一个通宵一局都没有完成的情况是很常见的,,,,所以不要因为玩了很久都没有开一盘而气馁,高级玩家也是一样,甚至更惨呢。关于猜雷的一些经验,可以参考这篇文章《猜雷的一些心得》http://saolei.net/BBS/Title.asp?Id=187。精彩内容,尽在百度攻略:保持平和的心态很重要。你需要冷静的思考,然后再进行精准的操作(高级玩家实际上是在进行条件反射),而不是简单的追求操作速度。关于心态调整可以参考这篇文章《雷诀八条》http://saolei.net/BBS/Title.asp?Id=1579。其次,扫雷游戏的本质就是用最短的时间完成游戏,而想达成最短的时间有两个要点: 精彩内容,尽在百度攻略:1、减少点击。每次点击操作(标雷、开空)都会耗费你的时间,将不必要的操作省去,只进行能让局面进一步开展的操作。在有多个操作可供选择时,选择其中最高效的操作,即点击最少,打开格子最多的操作。关于如何减少点击,以及达成局部最优化操作,可以参考这篇文章《谈局部最优化操作》http://www.saolei.net/BBS/Title.asp?Id=1262。 2、减少移动。毕竟只有点击能对开展局面有作用,两次点击之间的移动是没有任何意义的。这就要求你在一个局部中有多种操作供选择时,规划出一个执行的顺序,尽可能少地绕路,减少来回移动。高级玩家往往会先确定一条直线上的格子分别需要的操作(标雷或开空),然后在一次移动中通过固定频率的点击来完成对连续多个格子的操作。同时还要有一个大局观,规划对每个局部的完成顺序,尽量避免跨局部的长距离移动。精彩内容,尽在百度攻略: 最后,推荐你去扫雷网(http://www.saolei.net)多观摩高手的录像,还有很多高手写的经验心得。下面附送一些tips:1、标单雷双击:在有雷的格子上按住右键后不松开,移动到数字1上按左键,再松开右键(即1.5click)精彩内容,尽在百度攻略:2、听快节奏的音乐有助于集中注意力,也能掩盖鼠标的响声。3、降低屏幕的分辨率,同时降低鼠标的灵敏度,有助于提升操作性。4、天冷时用热水先泡手,有助于提升反应速度。精彩内容,尽在百度攻略: 二、来自百度: 扫雷作为策略游戏,需要游戏者精确的判断。现在扫雷高级的官方最快纪录是33.95秒,中级则是由一个波兰玩家保持的8.5秒。而初级纪录是1秒,世界上很多人达到了这一点。在1秒的时间里完成初级扫雷,据测算概率在0.00058%至0.00119%之间(属于运气题),最可能的方法是直接点击四个角的方块。而本文所作的事情,则是将雷与雷之间的规律给你揪出来,并且深入思考其中的内涵。让你以后面对扫雷时,缩短与记录的差距,战无不胜!精彩内容,尽在百度攻略:从简单雷区入手
下图是一个初级的雷区,并且标注了两颗雷的位置,你能将剩下的地雷扫描出来吗?精彩内容,尽在百度攻略: 经过逐一排查,可以很轻松的确定雷区中的6颗地雷所在位置: 精彩内容,尽在百度攻略:再来看一个简单的“雷区”: 通过逐步扫描每一个方块会发现:首先最左边的和最右边的两个格子都一定是地雷,从左数第二个空格子和从右数第二个空格子也都是地雷,由于数字1的关系,从左数第3个格子和从右数第3个格子都不是地雷,翻开一定是数字1,,,,这样一直下去,最后你会发现最中间的两个空格子,不管有没有地雷,都和周围格子上的数字不符。也就是说这样的雷区有bug,是无解的。雷区中的逻辑门
怎么判断一个雷区是否有bug?又怎么判断雷区中地雷的具体位置呢?难道一定要从头到尾将雷区扫描一遍吗?其实这些雷区里其实藏着一个规律。我们用数学方法来分析了上例的雷区:
在之前提到的这两个雷区里,把还没有翻开的格子交叉标记上字母x和x’。可以看到:当x的格子有雷时,x’格子一定没有地雷,反之亦然。如果将最左边的空格子作为输入,把最右边的格子作为输出,输入结果和输出结果一定是一样或者相反的。精彩内容,尽在百度攻略:如果是相反的,这相当于一个NOT(“非”)门电子元件。如果是一样的,就有趣了,这样的一片雷区就具备了电路导线的性质! 精彩内容,尽在百度攻略:在这里,雷区被看成了一个数字逻辑电路。执行这些“或”、“与”、“非”等逻辑运算的电路则被称为——逻辑门。任何复杂的逻辑电路都可由这些逻辑门组成。
逻辑门是集成电路上的基本组件。简单的逻辑门可由晶体管组成。这些晶体管的组合可以使代表两种型号的高低电平在通过它们后产生信号。而高低电平可以分别代表逻辑上的真假或二进制中的0和1,从而实现逻辑运算。具体到扫雷游戏里,也就是说,逻辑门可以用于判断一系列格子中的地雷的具体位置,而且它如同电路传导一样,精确而迅速。
常见的(也是扫雷中用到的)逻辑门包括“与”门、“或”门、“非”门等。将它们组合使用就可以实现更复杂的运算——完成复杂情形下的扫雷,这种方法比按照规则缓慢推进的扫雷方法要节省很多时间。精彩内容,尽在百度攻略: 复杂雷区中的精确判断
在简单的雷区中小试牛刀后,带着发现的规律,让我们进行一次实战演习。下图是高级扫雷游戏中的一个典型的雷区: 精彩内容,尽在百度攻略:你能在不翻开格子的情况下,直接指出黄格子中有无地雷吗? 如果将雷区随意改变一点——左上角的一个格子下移一位,结果又如何呢?精彩内容,尽在百度攻略: 你可能需要考量全局,从某个点开始逐步推理,将雷区全部扫描一遍,才能判断。而当雷区任意改变一点时,你都要重新来过,才能再次解答。这无疑是一种巨大成本负担。
实际上我们可以很快速地给出答案:第一个雷区的黄格子中无雷。而第二个雷区的黄格子中一定有雷。
这是怎么做到的?其实将上述的逻辑门引入到这个复杂的雷区中,一切都会变得简单而清晰起来。 精彩内容,尽在百度攻略:雷区内靠近边界、可以直接确定是地雷的位置都插上了标示旗,剩下的位置标上了不同的字母。把一个有地雷格子看作1,没有地雷的看作0。最左面的格子(u、v)作为输入,最右面的格子(t)作为输出。按照扫雷游戏的规则,经过一步步推算,它们之间的关系就是:
( u , v , t ) = ( 1 , 1 , 1 ) 或 ( 1 , 0 , 0 ) 或 ( 0 , 1 , 0 ) 或 ( 0 , 0 , 0 )
显然,这个雷区被归纳成了一个AND门,它不仅轻松化解了这个扫雷难题,而且把雷区的规律揭示出来了。如此一来,当你掌握扫雷中这些逻辑门规律并加以练习后,就能够达到精确、快速的“机械化”扫雷水准。而到那时,一个新纪录或许就会诞生了。数学家的扫雷研究
将扫雷问题抽象化从而缩短游戏时间的人,也不仅仅是扫雷发烧玩家。一些数学家也十分关注这个游戏背后的数学意义。
英国一位数学家用扫雷游戏中的逻辑规律构建了一系列电子元件,用电子电路模拟雷区。他试图将一个的给定的雷区图案交由计算机来判断是否可解。如果随着格子数量的增加,电脑的计算量增长不是很快,就是P问题,如果计算量增加的很快,就是NP问题。计算机判断雷区是否可解,需要这类问题属于P问题才可以。对于几种基本的电路元件(AND、OR、NOT),如果将很多个这样的元件组合起来,相互连接,就会产生很多个输入、输出口。判断最后哪些输出结果可以产生,哪些不可以产生的这类问题,被称为SAT问题,它属于一个经典的NP完全问题。而英国数学家的这个问题在一些时候等同于一个复杂电子电路的SAT问题,也就是NP完全问题。由此看来,面对一个上千上万个格子的巨型雷区,不要说去完成所有扫雷任务,就仅仅判断它是不是可解的,都可能会是计算机也承受不了的的大难题 精彩内容,尽在百度攻略:
相似攻略推荐网站防火墙
网站防火墙
您的请求过于频繁,已被网站管理员设置拦截!
可能原因:您对该页面的访问过于频繁
如何解决:
1)稍等一段时间重新访问;
2)如网站托管,请联系空间提供商;
3)普通网站访客,清理浏览器Cookie之后重新访问,或直接联系网站管理员;你可能不了解的世界第一:中国女子扫雷
中国都有哪些世界第一?
中国女子扫雷独霸世界!!!
先解说下图:
第一列:女子排名
第二列:世界排名(算上男子)
第三列:国家
第四列:名字(中国 名在前 姓在后)
第五列:总成绩
第六列:初级成绩
第七列:中级成绩
第八列:高级成绩
想看视频的可以去扫雷网&&下载,要用专业软件 Arbiter 看的(这些都是真实数据,凭自己本事扫出来的)
扫雷排名只记录初级中级高级总成绩 100s 以内的选手,目前拥有世界排名的妹子只有 81 人&&&
评论区问 44 秒怎么扫出来的朋友&&44 秒是总成绩,高级 44 秒还是有很多人可以扫出来的,然而总成绩 44 秒这个就&&
周丹高级成绩是 34.45(全国纪录),总成绩 44.29 也是全国第一(多么强大啊&&
前十名都被中国承包了!!!
中国女子扫雷独霸世界
以下内容更新于
(感谢 77 指出错误:之前用的扫雷版本是 Clone 不是 Minesweeper X,另外苏晓蕾已经更换国籍&&然而不影响我们的统治力。另外再次祝贺 77 破中级纪录)
国内的扫雷选手一般看重两个排名,中国扫雷网排名和世界扫雷网排名,如下图
很多扫雷网的雷友因为种种原因没加入世界扫雷网,不然我国的统治力肯定更加强大,不分男女基本已经占据了半壁江山(PS:第一的那个 Kamil 真心不是人,扫雷届神一样的存在),但是女子扫雷称霸世界无可厚非,第一的周丹还碾压所有国内男选手呢(巾帼不让须眉啊!)
另外解释下为什么这两幅图上各位选手的成绩会有差异,首先国内扫雷网的高级和中级会比国际网的多一秒是因为
以前常用的扫雷软件是 Minesweeper X,现在是 Arbiter,两者计时方式不同所以在国内网上传一个录像便会被 +1s,然而国际网就没有这个问题。
大家有兴趣的话可以下载一下扫雷软件(这些是有放录像功能的),然后就可以去扫雷网下载大神的视频进行学(mo)习(bai)。
初级纪录不同是因为国内对初级没啥限制,很多运气局都可以审核过,然而国际网要求特别严,明显的运气局不让过,要有明显的判雷过程。
很多知友都想问自己的扫雷水平算什么层次 Orz 我放两张图作为参考吧:
另外科普一下,中级世界纪录是 7.03 秒,高级世界纪录是 31.13 秒,都是 Kamil 的。
盲扫(不标雷,全程只用左键)的世界纪录也都是 Kamil 的,7.03 和 31.55(真是 bug 一样的存在)。
后面,热烈恭喜黄琪以 11.51s 破了自己的中级纪录,从而从女子世界第五升到了女子世界第四
附上本人的成绩图
500 赞分割线
很多知友都无法理解初级 0.5s 是怎么做到的&&然而初级比炒鸡蛋厉害的人大有人在 orz
首先,扫雷的规则是把所有不是雷的格子点出来,并不要求标雷
就拿郭蔚嘉(全国盲扫第一人,世界盲扫第二人,仅次于 Kamil)的初级纪录视频举例子吧
这是他第一下点击的结果,很显然最上面的那些有很大几率是一个空区(扫雷术语叫 OP),接下来是他的第二次点击
这样就可以很明显看出 1 左边不是雷,然后点击这个空就可以完成这局了(然而这局运气成分比较大,那一击 op 就有运气成分在,所以没有通过国际网的审核)
最后顺利完成本局,然后成绩是多少呢
0.30 秒,是的你们没有看错&&我开了 10 倍慢动作回放才截出来的图(献上你们的膝盖吧)
全国中级盲扫纪录是高伟豪的 7.87s
全国高级盲扫纪录是郭蔚嘉的 36.03s
两个都是清华学霸 Orz
他们不仅是扫雷扫得好&&
客官,这篇文章有意思吗?貌似是微软的一个面试题:扫雷游戏,给出一个雷图,让求出每一个未知块是雷的概率。身为数学盲,概率论61分的菜鸟表示概率这东西没有任何想法,但是想了下确定某一块是雷还是非雷这点还是可以搞定的...
于是就YY了一道ACM题,输入一个合法雷图,要求标记其中一定为雷和一定不为雷的块
开始想暴力,暴力可以解决任何问题,但是太麻烦了,复杂度也高,完全搞不来
然后想网络流,网络流可以求出一个可行解,但貌似没有好的方法确定某一块(我只能想到枚举删除每个点的拆边),这完全是没有意义的
后来想到一个块只有两种状态,是雷和非雷,就想到前一段练过的2-sat了,也看到松鼠会里面介绍扫雷逻辑,把扫雷转化为一个逻辑门电路的问题,然后说这是一个SAT问题,最后说这是一个NP问题。既然每个块只有两种状态,那就是2-SAT了,2-SAT可不是NP啊,或许我理解的有问题,不过貌似可以写代码了...
基本思想:
基本思想就是把一个逻辑关系用一条边来表示,从而将逻辑的传递关系转变成了图论中的连通问题,比如说:
如果事件A发生,则事件B肯定发生,就建边 A-&B
如果事件B发生,则事件C不能发生,就建边 B-&~C
这样建出的图就是 A-&B-&~C,那么我们就可以得到 A-&~C,即如果A发生,那么C不能发生
我们将一个事件的两种状态拆为两个点,然后按上面的逻辑关系建图,然后我们判断两个状态之间的连通性:
A-&~A,如果A发生了,那么A不能发生,说起来有点怪,换句话说就是A不能发生,如果A发生那么就会出现矛盾的逻辑关系
同样,如果~A-&A,则A肯定发生,如果两条边都有,那么有肯定这些逻辑关系中有矛盾,如果都没有边,那么就不能确定,两种情况都可以
从上面的分析来看,把一个未知块拆为两个点,一个表示该点为雷(x),另一个表示非雷(~x)
然后枚举每个数字建边
0:0周围不会有雷的(x-&~x),起始时不会出现0周围有块的情况,但之后会出现,下面会提到
1~8:如果数字n周围有k(k&=n)个未知块,那么只有两种情况可以判断:k=n时,全是雷,对每一个雷块建边 (~x-&x);k=n+1,如果有一块不是雷,那么其他块全是雷,对每一个x块,令其他块为x',则(~x-&x')
然后还可以想到数字1还有一些情况:对于1周围有大于1块时,如果某一块是雷,那么其他都不是雷 (x-&~x')
这样建好图,我们发现,我们人能判断的逻辑关系已经基本(后面还会说到一种情况)都加到图中了,然后重点到了:
对于一个点的两种状态,我们通过判断他们的连通情况来判断:
如果存在 x-&~x且~x-&x,也就是说存在矛盾,该情况不可能,我们保证是合法情况,不去考虑了
存在x-&~x但不存在~x-&x,说明某块不可能是雷
存在~x-&x但不存在x-&~x,说明某块肯定是雷
两个点不连通,好吧,这个块还不能确定
这样,就像人判扫雷一样,扫了一遍,但是我们发现,这样一次做过后并不能判断出全部的雷块和非雷块,对一些判断比较复杂的块还是可以确定他是雷非雷的,那么我们就多做几次好了,我们把前一次判断出来的雷和非雷加入新一轮的判断中,是雷的话就把周围数字减1,块数减1,非雷的话块数减1(这时候就会有0了),然后继续做,直到没有新的状态被确定为止,扫雷完成!!
(O不是雷,X是雷,#不确定)
下面代码:
1 #include&cstdio&
2 #include&cstring&
3 #include&cctype&
4 using namespace
6 char maze[15][15];
7 int id[15][15],
8 int dir[8][2]={{-1,-1},{-1,0},{0,-1},{-1,1},{1,-1},{0,1},{1,0},{1,1}};
9 bool gra[100][100]; 10 int lx, 11
12 void floyd(int n){ 13
for(int k=0;k&n;k++){ 14
for(int i=0;i&n;i++){ 15
for(int j=0;j&n;j++){ 16
gra[i][j]|=gra[i][k]&gra[k][j]; 17
22 void build(){ 23
memset(gra,false,sizeof(gra)); 24
for(int i=0;i&(tid&&1);i++) gra[i][i]=true; 25
for(int ii=0;ii&ii++){ 26
for(int jj=0;jj&jj++){ 27
if(isdigit(maze[ii][jj])){ 28
int cnt=0,type=maze[ii][jj]-'0'; 29
int block[10]; 30
for(int kk=0;kk&8;kk++){ 31
int tx=ii+dir[kk][0]; 32
int ty=jj+dir[kk][1]; 33
if(tx&0||ty&0||tx&=lx||ty&=ly) continue; 34
if(maze[tx][ty]=='X') type--; 35
if(maze[tx][ty]!='#') continue; 36
block[cnt++]=id[tx][ty]; 37
if(type){ 39
if(cnt==type){ 40
for(int i=0;i&i++){ 41
gra[block[i]&&1|1][block[i]&&1]=true; 42
}else if(cnt-1==type){ 44
for(int i=0;i&i++){ 45
for(int j=0;j&j++){ 46
if(i==j) continue; 47
gra[block[i]&&1|1][block[j]&&1]=true; 48
for(int i=0;i&i++){ 53
gra[block[i]&&1][block[0]&&1|1]=true; 54
if(type==1){ 57
for(int i=0;i&i++){ 58
for(int j=0;j&j++){ 59
if(i==j) continue; 60
gra[block[i]&&1][block[j]&&1|1]=true; 61
70 int main(){ 71
freopen("ms.in","r",stdin); 72 //
freopen("ms.out","w",stdout); 73
int t,cas=0; 75
scanf("%d",&t); 76
while(t--){ 77
scanf("%d%d",&lx,&ly); 79
for(int i=0;i&i++){ 80
scanf("%s",maze[i]); 81
for(int j=0;j&j++){ 82
if(maze[i][j]=='#'){ 83
id[i][j]=tid++; 84
bool flag=true; 88
while(flag){ 89
build(); 91
floyd(tid&&1); 92
flag=false; 94
for(int i=0;i&i++){ 95
for(int j=0;j&j++){ 96
if(maze[i][j]=='#'){ 97
bool a=gra[id[i][j]&&1][id[i][j]&&1|1]; 98
bool b=gra[id[i][j]&&1|1][id[i][j]&&1]; 99
if(a&b){100
puts("~~");101
}else if(b){102
maze[i][j]='X';flag=true;103
}else if(a){104
maze[i][j]='O';flag=true;105
printf("Case %d:\n",++cas);112
for(int i=0;i&i++){113
puts(maze[i]);114
puts("");116
我代码比较挫的,大致算起来O(n^4),不错,确实太大了,为了偷懒用了floyd判连通,这个地方可以改成做n次dfs,也就可以将O(n^3)的减到O(n^2),O(n^3)的总复杂度还是可以接受,另外那个while(true)循环,理论说可能做n次,不过我实在构造不来这样的数据,那个循环最多也就做两三次的样子,所以这个方法还是比较理想的~~(n为未知块个数&2,程序能处理最多50个未知块的数据,可以把数组范围适量改大)&&
扫雷时候还有另外的一种情况的判断,那就是给出雷的个数,雷的个数在扫雷后期还是很有作用的,比如下面的雷图:
221 XX2 #X2
剩1个或是0个雷,还有一些更复杂的情况,都可以通过雷的个数来判断某些块中是否存在雷,这样的问题不能用上面的方法来搞定,但是用概率就简单多了,又转化成了求概率的问题...
经过上面的一通乱搞,与数字相关的未知块都扫的差不多了,当然还有,尤其是一排2和一排1的情况,不过在上面的基础上求概率应该就简单多了...
#3223# ######
#2112#######
本文地址:&
阅读(...) 评论()

我要回帖

更多关于 扫雷怎么玩 的文章

 

随机推荐