深度优先搜索之迷宫寻宝
迷宫寻宝
有一个N行M列由单元格组成的迷宫.迷宫中埋藏有宝物,每一个单元格可能为空地,为障碍物,为宝藏.现在请你写一个程序求从起点到宝藏的最短步数.
输入格式:第一行输入N M表示地图的行和列.后面N行输入M个0 或1,0表示空地,1表示障碍物.最后一行输入4个数,前俩个是起点的xy坐标,后俩个是终点的xy坐标.
代码实现`
#include<stdio.h>
int a[100][100],N,M,step =0,X,Y,min=500,book[100][100];//用数组a存储地图,数组book标记,min记录最小步数
void xunbao(int x,int y,int step)
{int x1,y1,b[4][2]={{1,0},{0,1},{-1,0},{1,0}};//四种走法上下左右,顺序无所谓if(x==X&&y==Y){//判断是否走到宝藏处if (step<min){min=step;//更新minreturn;} }for(int i=0;i<4;i++){//枚举四种走法x1=x+b[i][0];y1=y+b[i][1];if(x1<0||y1<0||x1>M-1||y1>N-1){//判断是否出界continue;}if(a[x1][y1]==0&&book[x1][y1]==0){//判断是否有障碍物或者走过book[x1][y1]=1;xunbao(x1,y1,step+1);book[x1][y1]=0;}}return;
}
int main()
{int x,y;scanf("%d%d",&N,&M);for(int i=0;i<N;i++){for(int j=0;j<M;j++){scanf("%d",&a[i][j]);}scanf("\n");}scanf("%d%d%d%d",&x,&y,&X,&Y);xunbao(0,0,0);printf("%d",min);
}可以自定义一个地图去验证代码的准确性
深度优先搜索之迷宫寻宝相关推荐
- Qt利用深度优先搜索实现迷宫寻宝
先看效果: 利用QT搭建迷宫界面 利用单选框来构造迷宫,设置障碍物和宝藏的位置 利用深度优先搜索实现迷宫寻宝,并且在寻找的过程中避开障碍物. 搜索算法在线程中进行 定义方格的属性 enum Signa ...
- 深度优先搜索找迷宫的出路
3. 深度优先搜索 现在我们用堆栈解决一个有意思的问题,定义一个二维数组: int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, ...
- 打印数组算法:堆栈与深度优先搜索(迷宫问题)
每日一贴,今天的内容关键字为打印数组 栈堆的拜访规矩被制约为Push和Pop两种作操,Push(入栈或压栈)向栈顶添加元素,Pop(出栈或弹出)则掏出前当栈顶的元素,也就是说,只能拜访栈顶元素而不能拜 ...
- 深度优先搜索—走迷宫
例题:走迷宫 1.需要一个终止条件, 2.需要四个搜索方向:上下左右: 3.并且需要使用bool进行标记一个方向是否访问过: 4.如果需要找到多个可行解,那么如果该方向可行,需要取消标记.如果只需要也 ...
- 基于A*搜索和深度优先搜索解迷宫问题
摘 要 迷宫问题是指能够从起始点寻找一条通往目标点的路径,迷宫的传统搜索是采用深度优先和宽度优先搜索,虽然也能够解决迷宫的求解问题,但是这些方法效率比较低.我们已经知道深度优先和广度优先搜索归于为盲目 ...
- 搜索专题——迷宫寻宝
原题链接:FZU-2285 题目描述: 描述:洪尼玛今天准备去寻宝,在一个n*n (n行, n列)的迷宫中,存在着一个入口.一些墙壁以及一个宝藏.由于迷宫是四连通的,即在迷宫中的一个位置,只能走到与它 ...
- 深度优先搜索——走迷宫问题
题目大意: 用二维数组存储一个n * m的迷宫,0表示路,1表示墙.一个人位于左上角 (1,1)(1,1) 处,已知该人每次可以向上.下.左.右任意一个方向移动一个位置,求从左上角移动到右下角的最少次 ...
- DFS(深度优先搜索)---迷宫(洛谷)----SCAU_LEO
一.题目 题目链接:迷宫 首先,今天是1月2日,虽然有点晚了,但是还是祝大家新的一年快快乐乐,开开心心,题题AC,场场拿金,! 说说我对迷宫类题目的感受,我记得刚开始学迷宫的时候,不是看的很懂,但是睡 ...
- 用深度优先搜索解迷宫问题
定义一个二维数组: 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, } ...
最新文章
- Docker-Compose 使用简介
- matlab产生mif 文件,生成.mif文件的matlab程序
- 设计模式常见面试题汇总
- 视频盒子APP视频播放源代码安卓+IOS双端源码
- Dataset/Datatable/Datarow转Json的一种方法
- MySQL中表连接方式
- 在SQL SERVER 中如何备份和恢复单个表?
- 小程序开发:python sanic 实现小程序登录注册
- 高频量化交之李庆:在华尔街狼共舞的岁
- 机器学习(周志华) 第十六章强化学习
- 80386汇编_寄存器 寻址方式介绍
- 统计学cv值是什么意思_什么是CV值
- (转)网通电信域名劫持怎么办
- SVN介绍及使用总结
- 华为手机怎么语音服务器,原来华为手机实现文字转语音这么简单!今天才知道,真是绝了...
- Ubuntu软件安装与卸载
- spark任务一直卡住,问题分析、解决
- 推荐几个小白学习的网站
- 日元负利率和美元暴跌,是对人民币的夹击
- iPad Mini 到底什么样?4点概括