一、题目描述

小明置身于一个迷宫,请你帮小明找出从起点到终点的最短路程。 小明只能向上下左右四个方向移动。

输入格式:

第一行是两个整数n和m (1≤ m, n ≤100),表示迷宫的长和宽。接下来是n行,每行m个数字,表示整个迷宫。空地格子用0表示,障碍物用1表示,小明所在起点用3表示,终点用4表示。

输出格式:

如果能够到达终点,输出一个整数,表示小明从起点到目的地所需的最短时间。如果不能到达终点,输出“unreachable”。

输入样例1:

5 5
1 0 1 1 1
1 0 4 1 0
1 0 0 1 0
0 0 0 1 0
1 0 3 0 1

结尾无空行

输出样例1:

3

结尾无空行

输入样例2:

5 5
3 0 1 1 1
1 0 1 1 0
1 0 1 1 0
0 0 0 1 0
1 0 1 0 4

结尾无空行

输出样例2:

unreachable

结尾无空行

二、代码

#include<iostream>
using namespace std;int graph[100][100],visit[100][100];
//int step[4][2]={{1,0},{-1,0},{0,1},{0,-1}};int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
int ans=99999,n,m,fx,fy,x1,y1; //x,y表示起始位置x1,y1表示终点位置void dfs(int x,int y,int count){if(x==x1 && y==y1){ //到达终点 ans=min(ans,count); //取最小路径值 return; //结束当前函数 }for(int i=0;i<4;i++){ //四个方向搜索 int xx=x+dx[i];int yy=y+dy[i];if(visit[xx][yy]==0 && graph[xx][yy]!=1 && xx>0 && xx<=n && yy>0 && yy<=m){ //没有越界,且不是障碍物,且没有被访问过 visit[xx][yy]=1; //标记为访问 dfs(xx,yy,count+1); //路径数+1继续搜索 visit[xx][yy]=0; //还原 }}
}
int main(){//输入 cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>graph[i][j];if(graph[i][j]==3){fx=i,fy=j;}else if(graph[i][j]==4){x1=i,y1=j;}}}visit[fx][fy]=1;dfs(fx,fy,0);if(ans!=99999){cout<<ans;}else{cout<<"unreachable";}return 0;
}

7-1 迷宫问题 (10 分)相关推荐

  1. 考研国家线罕见大幅上涨,12个学科涨幅10分以上,超300万人将落榜

    金磊 博雯 发自 凹非寺 量子位 | 公众号 QbitAI 随着2022年研考国家线的发布,"考研"这一话题再次成为焦点. 据央视网报道,全国457万考研大军,院校计划招生人数约1 ...

  2. 7-5 密码锁 (10 分)

    7-5 密码锁 (10 分) 在神秘的乌啦啦国度有一个非常神秘的基地,多年来,小明家族一直在为前往神秘基地而努力着.终于在历经数千年的探索之后,他们来到了神秘基地的大门口. 现在他们站在入口处,但要进 ...

  3. C语言函数题-取子串 (10分)

    6-3取子串 (10分) 编写代码,完成从指定字符串中取指定子串的代码(不利用string.h类库),给定的是子串起始位置和长度,返回一个新的子字符串的首地址.如果起始位置不妥,返回空串.如果后面的子 ...

  4. C语言入门题-7-1 最大和最小 (10分)

    7-1 最大和最小 (10分) 请使用指针法(间接访问)编写程序,程序的功能是从键盘输入 10 个数,求其最大值和最小值的差. 输入格式: 输入10个整数 输出格式: 无 输入样例: 1 2 3 4 ...

  5. C语言程序练习- L1-040 最佳情侣身高差 (10分)

    L1-040 最佳情侣身高差 (10分) 专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高).如果符合,你俩的身高差不管是牵手.拥抱.接吻,都是最 ...

  6. C语言程序练习-L1-018 大笨钟 (10分)

    L1-018 大笨钟 (10分) 微博上有个自称"大笨钟V"的家伙,每天敲钟催促码农们爱惜身体早点睡觉.不过由于笨钟自己作息也不是很规律,所以敲钟并不定时.一般敲钟的点数是根据敲钟 ...

  7. C语言程序练习- L1-010 比较大小 (10分)

    L1-010 比较大小 (10分) 本题要求将输入的任意3个整数从小到大输出. 输入格式: 输入在一行中给出3个整数,其间以空格分隔. 输出格式: 在一行中将3个整数从小到大输出,其间以"- ...

  8. PTA 判断对称矩阵 (10分)

    PTA 判断对称矩阵 (10分) 输入格式: 在第一行内给出n值(1<n<100). 从第二行以后给出n阶矩阵所有行的元素值. 输出格式: 当输入的n阶矩阵是对称矩阵,输出"Ye ...

  9. 10-4 6-4 查询厂商“D“生产的PC和便携式电脑的平均价格 (10 分)思路+详解+测试用例

    前言:测试用表 贴心杰将这个测试表分享给大家 ,如果大家做题的时候发现那个点过不去,一定不要直接看别人的博客,先自己测试用例,如果思路也对 ,验证数据也对,还有错误 你再看看别人的思路!!! CREA ...

最新文章

  1. js filter 用法
  2. ABP理论学习之多租户
  3. [JUC-5]ConcurrentHashMap源码分析JDK8
  4. qt 提高图片加载速度
  5. android标题返回,【Android开发】自定义控件——带返回键标题栏
  6. Hello World, S/4HANA for Customer Management 1.0 1
  7. 前端学习(2282)全选和反选问题
  8. bow 折叠键盘 linux,bow便携折叠蓝牙键盘体验
  9. Android优化系列之ListView优化老生常谈
  10. alter system switch logfile与alter system archive log current
  11. 笔试c语言实现栈,栈的实现与操作(C语言实现)
  12. qq机器人升级最新教程
  13. Nginx(五)------搭建静态资源服务器
  14. securecrt破解版64位
  15. 打破双亲委派么,怎么打破_打破统一垃圾收集规则
  16. 2022年N1叉车司机考试题目及答案
  17. 未来智安CEO唐伽佳荣膺ISC十周年“代表性人物”
  18. python画三维坐标图像_由RGB-D图像获取三维坐标(相机坐标) Python
  19. 二进制、八进制、十进制、十六进制的英文及简写
  20. ODOO开发教程之图表

热门文章

  1. hexo-matery主题美化(四)
  2. R统计绘图-PCA分析及绘制双坐标轴双序图
  3. GIS的4D产品介绍
  4. 3.HTML5_常用标签_居中和空格
  5. Python中字典的key都可以是什么?
  6. Excel表格渐变色的处理
  7. 贷款计算还款计划execl工具
  8. Rtools安装方法
  9. R语言安装本地包、Warning in system(cmd) : ‘make‘ not found、安装和R版本匹配的Rtools
  10. 半数年轻人存款不足10万:反映现代社会年轻人面临的财务压力和挑战