题目选自洛谷P1605

题目是非常经典以及简单的DFS题目

这里给出模板

int dfs(int t)
{if(满足输出条件){输出解;}for(int i=1;i<=尝试方法数;i++)if(满足进一步搜索条件){为进一步搜索所需要的状态打上标记;dfs(t+1);恢复到打标记前的状态;//也就是说的{回溯一步}}
}

题目背景
迷宫 【问题描述】

给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过。给定起点坐标和

终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案。在迷宫

中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。

输入样例 输出样例

【数据规模】

1≤N,M≤5

题目描述
输入输出格式
输入格式:
【输入】

第一行N、M和T,N为行,M为列,T为障碍总数。第二行起点坐标SX,SY,终点

坐标FX,FY。接下来T行,每行为障碍点的坐标。

输出格式:
【输出】

给定起点坐标和终点坐标,问每个方格最多经过1次,从起点坐标到终点坐标的方

案总数。

输入输出样例
输入样例 1 

2 2 1
1 1 2 2
1 2

输出样例 1

1

解题代码:

#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
using namespace std;
int n,m,t,sx,sy,fx,fy,cnt;
int map[6][6],book[6][6];
int Next[4][2] = {{0,1},{1,0},{0,-1},{-1,0}}; //右下左上四个方向
void dfs(int x,int y){if(x == fx && y == fy){cnt++;return;}int nx,ny; //计算下一步的坐标for(int i=0;i<4;i++){ //枚举四个方向nx =x + Next[i][0], ny =y + Next[i][1];if(nx>0 && nx <=n && ny>0 && ny<=m && map[nx][ny]!=1 && book[nx][ny]!=1){book[nx][ny] = 1;dfs(nx,ny);book[nx][ny] = 0;}}
}
int main(){int a,b;cin>>n>>m>>t;cin>>sx>>sy>>fx>>fy; //起点终点for(int i=0;i<t;i++){cin>>a>>b;map[a][b] = 1; //0表示能走 1表示不能走}book[sx][sy] = 1;dfs(sx,sy);cout<<cnt;return 0;
}

深度优先搜索——迷宫(洛谷 P1605)相关推荐

  1. 深度优先搜索——全排列(洛谷 P1706)

    题目选自洛谷P1706 全排列是深搜的经典问题,也是作为学习深搜的入门问题,非常经典,也很容易理解 DFS模板,先进行递归终止条件判断,满足判断则进行相应的操作(例如输出结果) 然后逐次遍历即可 对于 ...

  2. 【洛谷P1605 迷宫】

    P1605 迷宫 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这是一道很简单的迷宫搜索题,适合搜索初学者练习. 思路 用mp数组表示迷宫地图 用vis数组表示"打标记& ...

  3. dfs 洛谷 P1605 迷宫

    洛谷 P1605 迷宫 题目: 链接 https://www.luogu.com.cn/problem/P1605 思路:从出发点点出发dfs搜索每一次可以到达终点的路径,边界条件为不能走障碍物(在输 ...

  4. DFS破解“迷宫问题”(洛谷P1605题题解,Java语言描述)

    迷宫 题目要求 P1605题目链接 分析 我的思路还比较容易理解,但确实开的数组太多了(最终代码). 我想开一个递归的DFS搜索,对越界情况进行淘汰 (话说这能算剪枝吗) ,再就是只允许在没被标记为已 ...

  5. 广度优先搜索——USACO08FEB(洛谷 P2895)

    本文要讲述的是一道既简单又复杂的一道题,值得我们好好去思考并求解. 题目出自洛谷P2895 同时也是USACO2008年的一道题. 其中主要问题是如何将问题转化为对应的数组或图?如何判断满足的条件情况 ...

  6. 深度优先搜索-迷宫问题

    引入 我们看一个迷宫: S**. .... ***T (其中字符S表示起点,字符T表示终点,字符*表示墙壁,字符.表示平地.你需要从S出发走到T,每次只能向上下左右相邻的位置移动,不能走出地图,也不能 ...

  7. 图论算法——幻象迷宫(洛谷 P1363)

    题目选自洛谷P1363 大概就是说给出一个01迷宫类的地图,按照这个地图来扩展新地图,类似这样 然后问你是不是###可以走无限远. ###那么,我们可以很清晰的意识到,如果可以从点(x,y)出发,达到 ...

  8. 洛谷—— P1605 迷宫

    P1605 迷宫 题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在 ...

  9. 迷宫(洛谷-P1605)

    题目描述 给定一个N*M(1≤N,M≤5)方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫中移动有上下左右四 ...

最新文章

  1. BST(binary search tree)类型题目需要用到的头文件binary_tree.h
  2. 百年科技的历史回顾与哲学反思
  3. ConcurrentHashMap 内部实现分析
  4. 为什么大家拍摄视频不用摄像机,反而选用单反照相机呢?
  5. 测试有道:微软测试技术心得
  6. SpringCloud-Zuul(二):自定义Filter及内部路由源码解析
  7. ubuntu设置成中文详细贴图教程
  8. Accessibility辅助功能的使用
  9. 论文阅读 (54):DeepFool: A Simple and Accurate Method to Fool Deep Neural Networks
  10. linux安装razer鼠标驱动
  11. 大一到大二的总结与感想
  12. Java包装类相关知识点
  13. 职高的计算机平面设计一般学什么,职高形象设计学什么
  14. 小米路由器显示网络未连接到服务器,小米路由器不能上网(连不上网)解决方法...
  15. Altium Designer Summer 9 Build 9.4.0.20159下载地址 + 破解补丁
  16. PyTorch—torch.utils.data.DataLoader 数据加载类
  17. JWT,JWS与JWE区别
  18. 小程序手机号码中间四位隐藏
  19. [Matlab]糖葫芦代码实现
  20. 痴情人肠断 无情最逍遥

热门文章

  1. 职场中,要善于交换利益
  2. python面试题(6)--- read、readline和readlines的区别
  3. 创建维护计划失败_如何善于创建和维护大型系统
  4. linux里gpl_GPL实施,ONOS与Linux Foundation合作以及更多新闻
  5. raspberry pi_Linux Foundation安全徽章,Raspberry Pi成功,白宫工具等
  6. 如何使用PressForward进行内容创建
  7. summit_Linux注册简介开始,Open Hardware Summit寻求提交,等等
  8. JavaScript 删除Cookie
  9. CSS 字体调整 font-size-adjust属性
  10. python 双指针法_leetcode 11 题解:python3@ 官方题解_暴力法_双指针法