




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DFS递归实现 栈实现 10网络李卿 DFS是神马东西 深度优先搜索算法 Depth First Search 是搜索算法的一种 是沿着树的深度遍历树的节点 尽可能深的搜索树的分支 当节点v的所有边都己被探寻过 搜索将回溯到发现节点v的那条边的起始节点 这一过程一直进行到已发现从源节点可达的所有节点为止 如果还存在未被发现的节点 则选择其中一个作为源节点并重复以上过程 整个进程反复进行直到所有节点都被访问为止 属于盲目搜索 因发明 深度优先搜索算法 霍普克洛夫特与陶尔扬共同获得计算机领域的最高奖 图灵奖 via 维基百科 先说点儿别的 穷举法 经典问题 百钱买百鸡 公鸡5元一只 母鸡3元一只 小鸡1元3只 现在有100元买百鸡 每种至少买一只 编程输出所有的可能性 穷举法 小鸡 母鸡 公鸡 穷举法 遍历出所有可能的情况 逐个判断哪些是符合问题所要求的条件 从而得出问题的解答 优点 结构简单 容易理解 便于用程序实现 缺点 是一种比较盲目的搜索方法 时间消耗大 递归与分治 递归 指在函数的定义中使用函数自身的方法 加终止条件 递归与分治 更经典的问题 求N的阶乘 递归与分治 分治法 将一个难以直接解决的大问题 分割成一些规模较小的相同问题 以便各个击破 分而治之 栈 后进先出 与递归关系亲密 STL中的栈 多维数组 一维数组 二维数组 三维数组 DFS DFS 能用来干什么 DFS 怎样利用DFS来走迷宫 走走看 起点 终点 用DFS怎么走 深搜深搜 当然是找好一个方向 然后尽可能深的搜喽 我们先按照 上 左 下 右 的顺序走走看 01234 0 1 2 3 4 用一颗树来描述一下 伪代码 做道题来试验一下 HDU1010TempteroftheBone ProblemDescriptionThedoggiefoundaboneinanancientmaze whichfascinatedhimalot However whenhepickeditup themazebegantoshake andthedoggiecouldfeelthegroundsinking Herealizedthatthebonewasatrap andhetrieddesperatelytogetoutofthismaze ThemazewasarectanglewithsizesNbyM Therewasadoorinthemaze Atthebeginning thedoorwasclosedanditwouldopenattheT thsecondforashortperiodoftime lessthan1second ThereforethedoggiehadtoarriveatthedooronexactlytheT thsecond Ineverysecond hecouldmoveoneblocktooneoftheupper lower leftandrightneighboringblocks Onceheenteredablock thegroundofthisblockwouldstarttosinkanddisappearinthenextsecond Hecouldnotstayatoneblockformorethanonesecond norcouldhemoveintoavisitedblock Canthepoordoggiesurvive Pleasehelphim 做道题来试验一下 InputTheinputconsistsofmultipletestcases ThefirstlineofeachtestcasecontainsthreeintegersN M andT 1 N M 7 0 T 50 whichdenotethesizesofthemazeandthetimeatwhichthedoorwillopen respectively ThenextNlinesgivethemazelayout witheachlinecontainingMcharacters Acharacterisoneofthefollowing X ablockofwall whichthedoggiecannotenter S thestartpointofthedoggie D theDoor or anemptyblock Theinputisterminatedwiththree0 s Thistestcaseisnottobeprocessed OutputForeachtestcase printinoneline YES ifthedoggiecansurvive or NO otherwise 做道题来试验一下 SampleInput445S X X XD 345S X X D000SampleOutputNOYES 题目大意 有一只小狗在迷宫找到一根骨头 它需要逃出这个迷宫 迷宫里的门只会在特定的时间打开 小狗只有在那时正好到达门才能离开迷宫 迷宫里的地板在站上去1秒后就会塌陷 所以每个位置只能走一次 输入格式 三个数字 分别是迷宫长宽和开门时间S代表小狗现在的位置D代表出口的位置X代表墙 也就是小狗不能走的地方 代表地板输出格式 能 YES 或不能 NO 敲代码呗 悲剧了 为什么会超时 OJ给的时间太少了介个嘛 OJ的测试数据太BT了测试数据太多测试的情况太复杂 搜索本身就很慢本质是穷举盲目性 怎么办 黑掉杭电 修改测试数据和时限 改进我们的程序 似乎不太现实 剪枝 剪枝 目标 消除无意义的搜索 方法 判断当前的搜索是否有意义 无意义则立即返回 例如 题目要求t秒时离开迷宫 迷宫的每个木板只能走一次那么如果木板数小于t小狗必然无法走出迷宫 可以直接免除搜索 奇偶性剪枝 0 0 偶数步1 1 偶数步1 0 奇数步0 1 奇数步 可得 如果n的奇偶性和上表不同 小狗必然无法按时到达出口同样可以免除搜索 把代码改改 A了 DFS就只能走走迷宫 来看一道不是迷宫的搜索题 HDU1016PrimeRingProblem n个数排成一个圆环 要求相邻两个数的和为素数 输入 68输出 Case1 143256165234Case2 12385674125834761476583216743852 DFS一下试试 写代码吧 等一下 DFS递归实现 栈实现 标题好像是 思考一下栈和递归的亲密关系 栈实现DFS的要点 利用栈来记录子节点序列 栈顶元素出栈时将其子节点入栈 不断入栈的过程也就是不断向深处搜索的过程无子节点可入栈的时候进行回溯 举例 树的遍历 练习 HDU 1015 Safecr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东阳江市阳春市高校毕业生就业见习招募8人(第四期)考前自测高频考点模拟试题及答案详解(各地真题)
- 2025北京市大兴区体育局招聘临时辅助用工2人考前自测高频考点模拟试题及答案详解1套
- 赣州市人力资源有限公司招聘劳务外派司机岗位笔试历年参考题库附带答案详解
- 浙江国企招聘2025年湖州市吴兴区国有企业选聘紧缺急需人才10人笔试历年参考题库附带答案详解
- 平武县供排水有限责任公司面向社会公开招聘工作人员笔试历年参考题库附带答案详解
- 2025黑龙江云谷投资控股(集团)有限公司招聘11人笔试历年参考题库附带答案详解
- 2025春季中国石油高校毕业生招聘模拟试卷完整参考答案详解
- 2025陕西华威科技股份有限公司招聘(8人)笔试历年参考题库附带答案详解
- 2025年甘肃庆阳华池县事业单位选调工作人员考前自测高频考点模拟试题及完整答案详解一套
- 2025广东佛山市第二人民医院服务中心招聘11人考前自测高频考点模拟试题及答案详解一套
- 2025事业单位联考A类《综合应用能力》模拟试题(含答案)
- 水路危险货物运输员专项考核试卷及答案
- 多传感器融合赋能无人驾驶列车的安全感知-洞察及研究
- 汉字的六种结构方式
- 口腔补牙课件
- 2025至2030年中国茄尼醇行业市场需求预测及投资战略规划报告
- 2025年四川省事业单位考试公共基础知识真题及答案解析
- 保障农民工工资课件
- 人脸采集管理办法
- 壶腹部肿瘤的治疗及护理
- 感术行动培训课件
评论
0/150
提交评论