迷宫问题
来源:互联网 发布:mac os x 系统下载 编辑:程序博客网 时间:2024/05/18 00:14
/*n行m列的迷宫,每个单元格要么是空地要么是障碍物,任务是帮助找到一条从迷宫的起点到小红的位置的最短路径,注意障碍物是不能走的,也不能走到迷宫之外。 0表示空地,1标注障碍物 */#include<iostream>using namespace std;int n,m,p,q,mins=999999;int a[51][51],book[51][51];int next[4][2]={{0,1},//向右{1,0},//向下 {0,-1},//向左 {-1,0} };//向上 void dfs(int x,int y,int step)//dfs的作用是用来处理当前这一步怎么走 {int tx,ty,k;if(x==p&&y==q)//到达小红位置 {if(step<mins)mins=step;return ;}//未到达位置向四个方向走for(k=0;k<=3;k++){//计算下一个点坐标 tx=x+next[k][0];ty=y+next[k][1];//判断是否越界if(tx<1||tx>n||ty<1||ty>n)continue;//判断该点是否是障碍物或者已经在路径中if(a[tx][ty]==0&&book[tx][ty]==0) {book[tx][ty]=1;//标记这个点已经走过 dfs(tx,ty,step+1);//开始尝试下一个点 book[tx][ty]=0;//尝试结束,取消标记 } } }int main(){int i,j,startx,starty;cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++)cin>>a[i][j];//用二维数组存储迷宫的状态 cin>>startx>>starty>>p>>q;book[startx][starty]=1;//标记起点防止重复走 dfs(startx,starty,0);cout<<mins<<endl;//输出最短步骤 return 0; }
0 0
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题...
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 自定义视图案例
- Java类的加载与实例创建
- 点云的简单可视化
- Java Integer的内涵
- [Java]Java的堆内存和栈内存解析--举例进行内存分析
- 迷宫问题
- 1105. Spiral Matrix (25)
- Sqoop 导入,导出练习
- Python函数式编程指南(一):函数式编程概述
- Python函数式编程指南(二):从函数开始
- Python函数式编程指南(三):迭代器详解
- Python函数式编程指南(四):生成器详解
- MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限
- MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限 (二)