dfs之解救小哈-c语言
问题
分析
先让小哼往右边走,然后一直尝试下去,直到走不通的时候再回到这里。
代码实现
#include <stdio.h>
int book[51][51],n, m,a[51][51],p,q,min=999999;void dfs(int x, int y, int step) {int next[4][2] = { {0,1} ,//向右走{1,0},//向下走{-1,0},//向左走{0,-1} };//向上走int tx, ty, k;//判断是否到达小哈的位置if (x == p && y == q) {//更新最小值if (step < min) {min = step;}//printf("%d", 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>m) {continue;}//判断该点是否是障碍物或是否已走过if (a[tx][ty] == 0 && book[tx][ty] == 0) {book[tx][ty] = 1;dfs(tx, ty, step + 1);book[tx][ty] = 0;}}return;}int main() {int i, j, startx, starty;printf("你要输入几行几列的迷宫:");scanf_s("%d %d", &n, &m);printf("请输入迷宫(0表示空地,1表示障碍物):\n");//读入迷宫for(i=1;i<=n;i++)for (j = 1; j <= m; j++) {scanf_s("%d", &a[i][j]);}printf("请输入初始位置:");scanf_s("%d %d", &startx,&starty);book[startx][starty] = 1;//初始位置做标记printf("请输入小哈的位置:");scanf_s("%d %d", &p, &q);dfs(startx,starty,0);//从初始步数为0printf("%d", min);getchar(); getchar();return 0;}
输入
5 4
0 0 1 0
0 0 0 0
0 0 1 0
0 1 0 0
0 0 0 1
1 1 4 3
输出
7
输出
7
dfs之解救小哈-c语言相关推荐
- 解救小哈(dfs或bfs)
题目描述: 有一天,小哈一个人去玩迷宫.但是方向感很不好的小哈很快就迷路了.小哼得知后便立即去解救无助的小哈.小哼当然是有备而来,已经弄清楚了迷宫的地图,现在小哼要以最快的速度去解救小哈.问题就此开始 ...
- 解救小哈——DFS算法举例
一.问题引入 有一天,小哈一个人去玩迷宫.但是方向感不好的小哈很快就迷路了.小哼得知后便去解救无助的小哈.此时的小哼已经弄清楚了迷宫的地图,现在小哼要以最快的速度去解救小哈.那么,问题来了... 二. ...
- 啊哈算法-DFS解救小哈python版
DFS 啊哈算法-解救小哈 maze_map = [] n,m = map(int,(input()).split()) maze_map = [input().split() for i in ra ...
- 解救小哈(dfs)-->改编自《啊哈!算法》
[算法描述] 有一天,小哈一个人去玩迷宫.但是方向感不好的小哈很快就迷路了.小哼得知后便去解救无助的小哈.此时的小哼已经弄清楚了迷宫的地图,现在小哼要以最快的速度去解救小哈.那么,问题就此开始了... ...
- 啊哈算法——万能的搜索——解救小哈DFS
迷宫由n行m列的单元格组成(n和m都小于50),每个单元格要么是空地,要么是障碍物.你的任务是帮助小哼找到一条从迷宫的起点通往小哈所在位置的最短路径. (障碍物不能走,且不可走到迷宫外) /*啊哈算法 ...
- 宽搜 c语言,啊哈算法之宽搜BFS解救小哈
简述 本算法摘选自啊哈磊所著的<啊哈!算法>第四章第三节的题目--BFS算法再次解救小哈.文中代码使用C语言编写,博主通过阅读和理解,重新由Java代码实现了一遍,以此来理解BFS算法.关 ...
- (四)万能的搜索 —— 2. 解救小哈
2. 解救小哈 任务: 迷宫由n行m列的单元格组成(n和m都小于等于50),每个单元格要么是空地,要么是障碍物. 任务是帮助小哼找到一条从迷宫的起点通往小哈所在位置的最短路径.注意障碍物是不能走的,当 ...
- 问题 F: 解救小哈
题目描述 有一天,小哈一个去玩迷宫.但是方向感很不好的小哈很快就迷路了.小哼得知后便立即去解救无助的小哈.小哼当然是有备而来,已经弄清楚了迷宫地图,现在小哼要以最快速度去解救小哈.问题就此开始了-- ...
- 迷宫问题(解救小哈)
文章目录 解救小哈 完整代码 读入数据 输出数据 总结 解救小哈 迷宫由n行m列的单元格组成(n和m都<=50),每个单元格要么是空地要么是障碍物.小哼要以最快的速度解救小哈,帮助小哼找到一条从 ...
最新文章
- linux下如何更新镜像源(ubuntu 10.04 为例),Ubuntu 10.04 更新源补充
- 从源码分析DEARGUI之交互添加和删除组件
- pytorch 按维取数据
- 【408预推免复习】操作系统之IO层次结构和IO控制方式
- python极简主义_XData: 为 Python 之禅写的极简主义数据验证工具
- arcgis server发布地图服务中文标注不能显示
- 网络编程(part4)--刷新缓冲区
- lock_sh 示例_带有示例的Python date __str __()方法
- Python问题3——爬虫编码问题
- java使用python爬虫,如何使用 Python 爬虫爬取 Java 题库?
- jdk版本导致的DB2异常:必需的字符转换器不可用。ERRORCODE=-4220, SQLSTATE=null
- JavaScript截取分割字符串
- 零中频接收机频率转换图_VHF跳频电台接收机射频前端的仿真设计
- CSS3 animation 动画用法介绍
- 初级第二旬04—六字准提观试题
- js获取当前农历时间
- Android之集成极光推送消息
- java重复代码重构_重构重复代码
- Geekban极客班 第三周
- 2020年淘宝年货销量数据监控可视化