博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深度搜索--poj3984 迷宫问题
阅读量:6140 次
发布时间:2019-06-21

本文共 1882 字,大约阅读时间需要 6 分钟。

题目:

定义一个二维数组: int maze[5][5] = {    0, 1, 0, 0, 0,    0, 1, 0, 1, 0,    0, 0, 0, 0, 0,    0, 1, 1, 1, 0,    0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。

input:

一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。

output:

左上角到右下角的最短路径,格式如样例所示。

sample input:

0 1 0 0 00 1 0 1 00 0 0 0 00 1 1 1 00 0 0 1 0

sample output:

(0, 0)(1, 0)(2, 0)(2, 1)(2, 2)(2, 3)(2, 4)(3, 4)(4, 4)

AC code:

#include
#include
#include
using namespace std;stack
s1,s2;int maze[5][5];bool dfs(int x,int y){ if(x==4&&y==4) //dfs递归的出口 { s1.push(x); //记录迷宫出口的坐标,返回true给上一层的if判断; s2.push(y); return true; } if(x>=0&&x<=4&&y>=0&&y<=4) { if(maze[x][y]==0) { maze[x][y]=1; if(dfs(x,y+1)||dfs(x+1,y)||dfs(x-1,y)||dfs(x,y-1)) //这个判断条件对唯一解才能有效的判断,若解不唯一,应当重新设定dfs函数的循环跳出条件; { s1.push(x); //若最后的结果可行,从出口往入口进栈,然后不断的返回true给上一层if调用,不断的进栈记录路径; s2.push(y); return true; } else { maze[x][y]=0; //如果走不通,则返回false,这样就不断的重新恢复迷宫原来的都1与0; return false; } } else { return false; } } else { return false; }}void print(){ while(s1.empty()!=true) { printf("(%d, %d)\n",s1.top(),s2.top()); s1.pop(); s2.pop(); }}int main(){ int temp=0; while(scanf("%d",&temp)!=EOF) { for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { if(i==0&&j==0) {maze[i][j]=temp;continue;} else scanf("%d",&maze[i][j]); } } dfs(0,0); print(); } return 0;}

TIP:

解题思路:深度优先搜索+递归

难度:入门级经典

 

转载于:https://www.cnblogs.com/myxdashuaige/p/8654055.html

你可能感兴趣的文章
JavaScript面向对象编程深入分析(2)
查看>>
linux 编码转换
查看>>
POJ-2287 Tian Ji -- The Horse Racing 贪心规则在动态规划中的应用 Or 纯贪心
查看>>
Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月7日-1月14日)
查看>>
关于C#导出 文本文件
查看>>
使用native 查询时,对特殊字符的处理。
查看>>
maclean liu的oracle学习经历--长篇连载
查看>>
ECSHOP调用指定分类的文章列表
查看>>
分享:动态库的链接和链接选项-L,-rpath-link,-rpath
查看>>
阿里云企业邮箱 在Foxmail 7.0上POP3/IMAP协议设置方法
查看>>
Javascript一些小细节
查看>>
canvas学习总结
查看>>
Javascript的if判断
查看>>
spring cloud gateway 源码解析(3)记录请求参数及返回的json
查看>>
阿里云ECS数据盘格式化与挂载图文教程
查看>>
Flexbox响应式网页布局 - W3Schools视频02
查看>>
【手牵手】搭建前端组件库(二)
查看>>
怎么给视频添加音频或配乐
查看>>
怎么转换音乐格式
查看>>
Leaflet-Develop-Guide
查看>>