版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1递归与深度优先搜索递归与深度优先搜索2迷宫求解迷宫求解31、迷宫求解、迷宫求解-定义数据结构,读取迷宫信息定义数据结构,读取迷宫信息 从题意和样例数据可以看出,迷宫中每个方格的行下标和列下标,都是从1开始编号的。 为了便于处理,我们也可以将数组预留一部分空间,数组行下标和列下标也从1开始编号l mapij取值为0,表示可以通过;取值为1,表示有障碍,不可通过l 因为数组的行下标和列下标都从1开始,且1=N、M(1, 2)-(1, 1).的重复递归调用,导致程序死循环,函数无法退出00001010063、迷宫求解、迷宫求解-定义数组标记方格已经被访问(定义数组标记方格已经被访问(解决死循环解决
2、死循环)7练习练习8洛谷洛谷P1238(走迷宫、求迷宫的所有路径走迷宫、求迷宫的所有路径)91、洛谷、洛谷P1238(走迷宫、求迷宫的所有路径走迷宫、求迷宫的所有路径)-解题思路解题思路该题的解题思路与上题类似以起始点为参照,寻找上、下、左、右可到达的方格将上、下、左、右可到达的方格设为新的起始点1.回到步骤1。直到没有可到达的方格或者到达终点为止100011101011101101110111110DFS搜索树与回溯搜索树与回溯 有一棵如右图的路径树,假设我们寻找一条从小红点到小绿点的路径 在寻找路径时,若遇到不满足条件的组合,往回走的过程,就称之为回溯112、洛谷、洛谷P1238(走迷宫走
3、迷宫)-编写程序判断是否存在从起点到达终点编写程序判断是否存在从起点到达终点的路径的路径visit数组防止重复递归123、洛谷、洛谷P1238(走迷宫走迷宫)-定义数组,保存求解路径定义数组,保存求解路径每条路径最多经过所有的方格134、洛谷、洛谷P1238(走迷宫走迷宫)-增加路径展示函数增加路径展示函数145、洛谷、洛谷P1238(走迷宫走迷宫)-重置访问状态,实现寻找过程回溯重置访问状态,实现寻找过程回溯将visit置0,实现路径寻找回溯15洛谷洛谷P1141(01迷宫迷宫)题目意思:求从某一格开始可到达的格子总数161、洛谷、洛谷P1141(01迷宫迷宫)-寻找递推过程寻找递推过程以左
4、边的迷宫为例,假如从第2行、第3列出发(行和列从1开始编号)令:lAi, j为迷宫第i行、第j列的数字,则Ai, j的取值为0或者1lTi, j为从第i行、第j列出发可到达的格子总数,则从第2行第3列出发,可到达的格子总数可记为T2, 3求解递推过程如下(因为可到达的格子总数包含自身所以要加1):l因为A2, 3 = 0,所以:T2, 3 = T2, 2 + T2, 4 + T3, 3 + 1l因为A2, 2 = 1,所以:T2, 2 = T1, 2 + 1l因为A2, 4 = 0,所以:T2, 4 = T1, 4 + T2, 5 + T4, 3 + 1l因为A3, 3 = 0,所以:T3,
5、3 = T3, 4 + 1l重复如上递推步骤,直到某个格子不可到达相邻的任何格子为止1000110110101001101001000100011001100011100110001172、洛谷、洛谷P1141(01迷宫迷宫)-定义数据结构读取迷宫信息定义数据结构读取迷宫信息因为输入共有n行,每行n个字符,字符的取值只有0或1,字符间无空格。所以我们可以定义二维字符数组来保存迷宫的信息,同时以读入字符串的方式读取迷宫信息。由于字符串需要额外的空间保存结束符0,且n (1, 2)-(1, 1)-(1, 2)-(1, 1).重复的递归调用,无法结束。直至消耗完所有的栈内存,导致程序运行崩溃。100
6、010101203、洛谷、洛谷P1141(01迷宫迷宫)-防止程序死循环崩溃(防止程序死循环崩溃(解决办法解决办法)我们可以按如下方式,防止重复的递归调用。定义二维数组标记方格是否已经被访问1.在递归过程中过滤掉已经访问过的方格214、洛谷、洛谷P1141(01迷宫迷宫)-优化运算时间优化运算时间到此为止,虽然我们能求出所有方格可到达的方格数,但是如果需要求解的起点数量m太大时,就会超时。通过分析可以发现每个格子可以到达的格子数量有如下特点:l从某个格子出发,在求解过程中所经过的所有格子,它们可到达的格子总数都相同。l假如从(2, 3)出发,可到达(2, 2)、(2, 4)、(3, 3)、(1
7、, 2)、(1, 4)、(2, 5)、(4, 3)、(3, 4).; 那么T2, 3 = T2, 2 = T2, 4 = T3, 3 = T1, 2 = T1, 4. 基于该特点,我们可以采用如下方式优化程序的运行时间定义数组int P1000*10002,记录从指定方格出发,可到达的所有方格的行下标和列下标。定义数组int R10001000,保存从每个方格出发,可到达的方格数量。若从(x, y)出发可达到的方格数为A,则求解过程中经过的所有方格,它们可到达的方格数都为A。针对输入的x, y,若Rxy 0 则可直接输出结果,无需再次计算,节约计算时间224、洛谷、洛谷P1141(01迷宫迷宫)-优化运算时间优化运算时间23洛谷洛谷P3956(棋盘棋盘)-NOIP2017PJT3241、洛谷、洛谷P3956(棋盘棋盘)-编写路径递推搜索模板编写路径递推搜索模板252、洛谷、洛谷P3956(棋盘棋盘)-统计路径中花费的金币,计算花费的最少统计路径中花费的金币,计算花费的最少金币金币求所有路径中的最小花费从一个棋格到另一个棋格需要花费的金币263、洛谷、洛谷P3956(棋盘棋盘)-记录路径中棋格的颜色,完善魔法的限制记录路径中棋格的颜色,完善魔法的限制功能功能经过的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老护理员岗位培训
- 国家级检验检测机构资质认定评审员考试试题及答案(海南省东方市2026年)
- 法律常识竞赛题库及答案
- 2026年心理治疗师中级考试备考冲刺模拟试卷含答案解析
- 2026年世界知识产权日知识竞赛试题及答案
- 2025年科技与乡村小学英语的结合方式
- 外源赤霉素和脱落酸对干旱胁迫下茶树幼苗生理特性的影响
- 2026年湖北省仙桃市专业技术职称水平能力测试(公共基础知识)自测试题及答案
- 2026年湖北省潜江市农业专业技术职务水平能力测试(农学)全真模拟试题及答案
- 【备考2026】海南省中考模拟数学试卷1(含解析)
- 2026年江西省医师定期考核题库-人文(卷7卷8-100题)
- 2026年新版卫生法律法规考试题及答案
- 2026年四川省绵阳市中考化学模拟预测试卷
- 江西生物科技职业学院《公共经济学》2025-2026学年期末试卷
- 浙江省金华市2026年中考一模 科学卷
- 河南开放大学2026年《版式设计》形考作业1-3答案终考作业答案
- 2026年山西省教师职称考试(教育管理)真题
- 2026年中考历史考前冲刺:中国+世界(古代史|近代史|现代史) 小论文范文汇编
- 2026年高级结核病考试题及答案
- 先天性无阴道患者的个案护理
- 气血疏通中级班讲义
评论
0/150
提交评论