最少步数----深搜
最少步数
- 描述
-
这有一个迷宫,有0~8行和0~8列:
1,1,1,1,1,1,1,1,1
1,0,0,1,0,0,1,0,1
1,0,0,1,1,0,0,0,1
1,0,1,0,1,1,0,1,1
1,0,0,0,0,1,0,0,1
1,1,0,1,0,1,0,0,1
1,1,0,1,0,1,0,0,1
1,1,0,1,0,0,0,0,1
1,1,1,1,1,1,1,1,10表示道路,1表示墙。
现在输入一个道路的坐标作为起点,再如输入一个道路的坐标作为终点,问最少走几步才能从起点到达终点?
(注:一步是指从一坐标点走到其上下左右相邻坐标点,如:从(3,1)到(4,1)。)
- 输入
-
第一行输入一个整数n(0<n<=100),表示有n组测试数据;
随后n行,每行有四个整数a,b,c,d(0<=a,b,c,d<=8)分别表示起点的行、列,终点的行、列。 - 输出
- 输出最少走几步。
- 样例输入
-
2 3 1 5 7 3 1 6 7
- 样例输出
-
12 11
1 2 #include <stdio.h> 3 int tu[9][9]={ 4 1,1,1,1,1,1,1,1,1, 5 1,0,0,1,0,0,1,0,1, 6 1,0,0,1,1,0,0,0,1, 7 1,0,1,0,1,1,0,1,1, 8 1,0,0,0,0,1,0,0,1, 9 1,1,0,1,0,1,0,0,1, 10 1,1,0,1,0,1,0,0,1, 11 1,1,0,1,0,0,0,0,1, 12 1,1,1,1,1,1,1,1,1, 13 }; 14 int bs[9][9]={0}; 15 int min=32; 16 17 int DFS(int a,int b,int c,int d,int count)/*起始位置(a,b),终点位置(c,d),步数count 初值为 0 */ 18 { 19 if(tu[a][b]==1) return count; 20 else 21 { 22 if(a==c&&b==d) 23 { 24 if(min>count) min=count; 25 } 26 bs[a][b]=1; 27 28 if((!tu[a-1][b])&&(!bs[a-1][b]))/*上边*/ 29 count=DFS(a-1,b,c,d,count+1); 30 if((!tu[a+1][b])&&(!bs[a+1][b]))/*下边*/ 31 count=DFS(a+1,b,c,d,count+1); 32 if((!tu[a][b-1])&&(!bs[a][b-1]))/*左边*/ 33 count=DFS(a,b-1,c,d,count+1); 34 if((!tu[a][b+1])&&(!bs[a][b+1]))/*右边*/ 35 count=DFS(a,b+1,c,d,count+1); 36 37 bs[a][b]=0; 38 39 return count-1; 40 } 41 } 42 43 int main(void) 44 { 45 int a,b,c,d,n,count; 46 scanf("%d",&n); 47 while(n--) 48 { 49 count=0; 50 min=30; 51 scanf("%d%d%d%d",&a,&b,&c,&d); 52 if(tu[a][b]==0 && tu[c][d]==0) 53 { 54 DFS(a,b,c,d,count); 55 printf("%d\n",min); 56 } 57 } 58 return 0; 59 } 60
转载于:https://www.cnblogs.com/xiaoyunoo/p/3516875.html
最少步数----深搜相关推荐
- [数据结构] 迷宫问题(栈和队列,深搜和广搜)
代码: #include <iostream> #include <string.h> #include <stack> #include <queue> ...
- P2668 斗地主 dp+深搜版
题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...
- 方格取数(多线程dp,深搜)
https://www.luogu.org/problem/P1004 题目描述 设有N×N的方格图(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示(见样例): 某 ...
- ACM 海贼王之伟大航路(深搜剪枝)
"我是要成为海贼王的男人!" 路飞他们伟大航路行程的起点是罗格镇,终点是拉夫德鲁(那里藏匿着"唯一的大秘宝"--ONE PIECE).而航程中间,则是各式各样的 ...
- 骑士精神(双向深搜+meet in the middle)
题目描述 在一个5×55×55×5的棋盘上有121212个白色的骑士和121212个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为111,纵坐标相差为22 ...
- 22-广搜深搜 Breadth-first Search Depth-first Search
参考:<算法导论>第22章 <算法图解>第6章 目录 图G=(V,E) 广度优先搜索 一:模板(POJ 3984 迷宫问题)(bfs+输出路径) 二:闪现(类似问题http: ...
- 搜索算法-深搜与广搜
1.深搜与回溯法 *本文主要是供自己复习,或者做笔记总结使用,专业性有待考量,如果遇到不对的地方还请指出来. 什么是回溯法?枚举每一个填空的选项,然后判断这个选项是否合法.如果合法则继续填写下一个选项 ...
- 深搜、广搜、搜索剪枝
搜索与回溯讲解 文章目录 深搜 方向向量: DFS代码: 题目讲解: 八皇后问题 字符序列 自然数的拆分 广搜 BFS代码: 题目讲解: 瓷砖 关系网络 bfs与dfs的用途与区别 搜索剪枝 可行性剪 ...
- 水叮当的舞步 深搜
背景 Background 水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变. 为了讨好她的偶像虹猫,水叮当决定在地毯上跳一支轻盈的舞来卖萌~~~ 描 ...
最新文章
- ROS_Kinetic ubuntu 16.04
- 字节跳动大佬的Python自学笔记.pdf
- 宇宙和你,本质上其实只是个八维数字?
- ubuntu shell实现99乘法表
- 需求评审五个维度框架分析及其带来的启示-5-结束语
- ACL 2019 开源论文 | 使用跨领域语言建模的跨领域命名实体识别
- html5 drawimage 不显示,javascript – 来自视频的HTML5 Canvas drawImage在第一次绘制时不显示...
- HTML5新增视频标签(HTML5)
- 17-05-25模拟赛
- Win10桌面点鼠标右键一直转圈的解决方法
- 深入理解 http 反向代理(nginx)
- 读洛水《知北游》有感(1)
- OneDrive无法打开登陆怎么办
- APP开发应注意的几点
- C语言速成笔记 —— 考点详解 知识点图解
- 收集一些有用的php函数---from cmstop
- 数学模型在计算机科学与技术,科学计算与数学建模
- NoSQL概述-从Mongo和Cassandra谈谈NoSQL
- [题解]CF662D
- 一个平凡的外国人,却对中国大爱无疆
热门文章
- libusb开发:bulk/interrupt数据传输、hotplug热插拔
- 开发工作和测试工作不能由同一部分人来完成。如果开发人员对程序的功能要求理解错了,就很容易按照错误的思路来设计测试用例。如果开发人员同时完成测试工作,那么测试工作就很难取得成功。
- 不是每个人都适合linux
- 伯颜的诗和“金佛”趣事
- 基于DM642的X264开源代码实现的研究
- 64位Ubuntu kylin 16.04使用fastboot下载内核到tiny4412开发板
- 2020 ccf推荐中文期刊_CCF推荐国际学术期刊
- git 32位_编译64位的BorderlessGaming
- 计算机怎么设置网络共享,局域网共享设置,教您电脑怎么设置局域网共享
- 2.转动的地球shader