迷宫问题,打印所有路径,深度搜索,dfs
2024-10-20 13:25:19
#include<iostream>
using namespace std;
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, 0, 0,
};
typedef struct
{int x;int y;}Point;
int dir[4][2]={{0,-1},{0,1},{1,0},{-1,0}};
Point path[40];int len=-1;
void dfs(int x,int y)
{ int k,nx,ny;
maze[x][y]=1;
path[++len].x=x;path[len].y=y;
if(x==4 && y==4){//结束条件
cout<<"one case:"<<endl;
for(k=0;k<=len;k++)
cout<<path[k].x<<'\t'<<path[k].y<<endl;
}
else
for(k=0;k<4;k++)
{
nx=x+dir[k][0];ny=y+dir[k][1];//下一位置(nx,ny)
if(nx>=0 &&nx<5 &&ny>=0 && ny<5 && maze[nx][ny]==0){
dfs(nx,ny);
}
}
maze[x][y]=0;//把(nx,ny)尝试后清除当前标记
len--; }
int main()
{
dfs(0,0);
}
最新文章
- Shell命令和流程控制
- FORM中需要反复选择LOV
- C++ 11 Template ... 与Decltype 测试
- 使用QRCode生成二维码
- java编程思想-java注解
- MIT 6.828 JOS学习笔记2. Lab 1 Part 1.2: PC bootstrap
- [转载][翻译] 利用JSF、SpringFramework和Hibernate构建Web应用的实例讲述
- [转]ios平台内存常见问题
- 读《我是一只IT小小鸟》有感
- 用 Webgoat 撬动地球,看安全测试的引路石!
- vsftp 安装日志
- 解决";应用程序无法启动,因为应用程序的并行配置不正确";问题
- javascript获取链接参数
- 转载 jQueryEasyUI Messager基本使用
- python to shell vimdiff
- Linux 编程笔记(四)
- nginx 源码安装的重启命令
- vue---import的几种表现形式
- Squid.conf配置详情
- 读了这篇文章,你将变身web分析大师