Noip考前冲刺-搜索枚举2.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

NOIP考前冲刺

--枚举、搜索武森

MAZE现在有一个6×6的迷宫。每个格子可能是空地或者是洞穴。每个格子的四周有可能是墙,如果一个格子的左边有墙,那么它不能从这个格子往左面的格子走。迷宫中有且只有一个起点〔圆点〕和重点〔星型〕,起点和重点有可能是属于同一个格子。现在可以往上〔U〕、下〔D〕、左〔L〕和右(R)四个方向走。先要求用最短的步数从起点走到终点〔当走洞穴是,那么算失败〕。

解法BFS状态表示DIST[X,Y]状态转移DIST[X,Y]=MIN{DIST[X+DIRX[I],Y+DIRY[I]]}+1转移条件:转到格子是否在范围内转移格子是否有墙转移格子是否似乎洞穴

DOUBLE

MAZE现在有两个6×6的迷宫每个格子可能是空地或者是洞穴。每个格子的四周有可能是墙,如果一个格子的左边有墙,那么它不能从这个格子往左面的格子走。迷宫中有且只有一个起点〔圆点〕和重点〔星型〕,起点和重点有可能是属于同一个格子。现在可以往上〔U〕、下〔D〕、左〔L〕和右(R)四个方向走。现在同时控制两个格子的走法〔一个命令两个迷宫同时走〕,如果有个一个迷宫走到了洞穴,那么失败。如果有一个格子的要走的方向有墙,那么待在原位置的不动。先要求用最短的步数〔步数相同要求字典序最小〕从起点走到终点〔当走洞穴是,那么算失败〕。

解法BFS?

解法BFS状态表示DIST[X1,Y1,X2,Y2]状态表示DIST[X1Y1,X2Y2]哪个比较好?

解法BFS状态表示DIST[X1Y1,X2Y2]状态转移DIST[X1Y1,X2Y2]=MIN{DIST[X1Y1+WAYX[I],X2Y2+WAYY[I]]}+1DIST[X1Y1+WAYX[I],X2Y2+WAYY[I]]表示能到达[X1Y1,X2Y2]的格子转移条件:转到格子是否在范围内转移格子是否有墙转移格子是否似乎洞穴注意那些有一个格子的路上有墙,留在原地的格

解法求出了最短距离。怎么求得字典序最小的方案?

方法1每次按字典序有小到大的走路方式〔D,L,R,U〕枚举走路的格子,判断DIST’是否等于当前格子的DIST-1.

方法特点优点:容易想到,简单易写不容犯错.缺点:算法复杂度高,

方法2根据上面的方法,我们易知枚举是否要走路的格子,如果是,那么DIST’是否等于当前格子的DIST-1.那个能否从终点到起点进行BFS,直接计算出路径最短并且字典序最小的方案?

算法实现本卷须知:在倒向BFS的时候,我们要注意的是现在的BFS是对原本实践的回放,和原本的BFS方式不同。对于一个左边有墙格子,如果他在原本的BFS的过程当中是向左走的,那么我们现在就要向右走,这点毋庸置疑!但是,他有可能是向左走的时候,发现左边有墙而停留在原味的结果,所以对于这种情况,我们要考虑两种不同的情况,当然如果两个迷宫同时出像这种情况,那么要考虑2×2=4种情况。

方法特点优点:便于根据题目要求,得到最短且字典序最小的解。时间复杂度低缺点:细节考虑较多编程复杂度高不易实现

考点选手的正向思维和逆向思维思维的严谨性

智慧珠游戏智慧珠游戏拼盘由一个三角形盘件和12个形态各异的零件组成。12个零件按珠子数分3大类

第1大类:有三个珠子符号为A

第2大类:有四个珠子符号为B符号为C符号为D

第3大类:有五个珠子符号为E 符号为I符号为F 符号为J符号为G 符号为K符号为H 符号为L

举例说明

字符化B?????????BK????????BKK???????BJKK??????JJJDD?????GJGDDC????GGGCCCI???EEEHHIIA??ELHHHIAAF?ELLLLIFFFF

条件要求对于由珠子构成的零件,可以放到盘件的任一位置,条件是能有地方放,且尺寸适宜,所有的零件都允许旋转(0o、90o、180o、270o)和翻转(水平、竖直)。?现给出一个盘件的初始布局,求一种可行的智慧珠摆放方案,使所有的零件都能放进盘件中。

样例输入文件一共有10行,第i行有i个字符。如果第i行的第j个字符是字母”A”至”L”中的一个,那么表示第i行第j列的格子上已经放了零件,零件的编号为对应的字母。如果第i行的第j个字符是”.”,那么表示第i行第j列的格子上没有放零件。输入保证预放的零件已摆放在盘件中。

。?????????。。????????。。。???????。。。。??????。。。。。?????。。。。。C????。。。CCC。???EEEHH。。。??E。HHH。。。。?E。。。。。。

文档评论(0)

181****7662 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档