【搜索1】P1605 迷宫
题目背景
迷宫 【问题描述】
给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过。给定起点坐标和
终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案。在迷宫
中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。
输入样例 输出样例
【数据规模】
1≤N,M≤5
题目描述
输入输出格式
输入格式:
【输入】
第一行N、M和T,N为行,M为列,T为障碍总数。第二行起点坐标SX,SY,终点
坐标FX,FY。接下来T行,每行为障碍点的坐标。
输出格式:
【输出】
给定起点坐标和终点坐标,问每个方格最多经过1次,从起点坐标到终点坐标的方
案总数。
输入输出样例
2 2 1
1 1 2 2
1 2
1
题目思路:
1.用2个数组dx[4],dy[4]的组合表示上下左右四个方向,
2.搜索:从第一个节点开始,依次从它的上,下,左,右,方向开始搜索。如果第一次上可以走到s2,又对s2这个节点进行上下左右的搜索,直到四个方向都走不通,回到上一个节点。在此之中,如果到达了终点则总的次数加1.
3.终点:第一个节点的所有方向的路径都被试探过则结束。 伪代码模板:
dfs(int k){
if(已经到达这个点){
路径数+1;
for(四个方向都要遍历){
if(可以向下走){
先标记下一个方向d(k+1)被走过;
dfs(下一个点);
恢复下一个方向d(k+1);//因为在dfs遍历完一个方向后,应该继续遍历当前节点的其他方向
}
}
}
实现代码:
#include<iostream>
using namespace std;
int a[][];
int n,m,f, x0,y0,x1,y1;
int dx[]={,,-,},dy[]={,,,-};
int s=;
void dfs(int x,int y){
if(x==x1&&y==y1){
s++;
return ;
}
for(int i=;i<=;i++){
int z=x+dx[i];
int w=y+dy[i];
// cout<<"i"<<i<<endl;
if(a[z][w]==&& z<=n&&z>= &&w<=m && w>=){
a[z][w]=;
// cout<<z<<" "<<w<<endl;
dfs(z,w);
a[z][w]=;
}
} }
int main(){ cin>>n>>m>>f;//行列
int i,j; for(i=;i<=n;i++){
for(j=;j<=m;j++){
a[i][j]=;
}
} cin>>x0>>y0>>x1>>y1;
a[x0][y0]=;
int x2,y2;
while(f--){
cin>>x2>>y2;
a[x2][y2]=;
}
dfs(x0,y0); cout<<s<<endl; return ;
}
【搜索1】P1605 迷宫的更多相关文章
- 洛谷 P1605 迷宫
题目链接 https://www.luogu.org/problemnew/show/P1605 题目背景 迷宫 题目描述 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 ...
- P1605 迷宫
P1605 迷宫 这是一道毒瘤题... 这是一道广搜题 bfs ... 代码: #include<cstdio> #include<iostream> #include< ...
- 洛谷—— P1605 迷宫
P1605 迷宫 题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在 ...
- 洛谷P1605 迷宫 深度搜索 模板!
题目背景 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫中移动有上下左右四种方式,每次只能移 ...
- 搜索--P1605 迷宫
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...
- (DFS)P1605 迷宫 洛谷
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...
- P1605 迷宫(洛谷)
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫中移动有上下左右 ...
- P1605迷宫
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...
- 洛谷P1605 迷宫——S.B.S.
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...
随机推荐
- [物理学与PDEs]第4章习题3 一维理想反应流体力学方程组的数学结构
证明: Euler 坐标系下的一维反应流体力学方程组 (3. 10)-(3. 13) 也是一个一阶拟线性双曲型方程组. 证明: 由 (3. 10), (3. 12), (3. 13) 知 $$\bex ...
- [物理学与PDEs]第2章习题1 无旋时的 Euler 方程
试证明: 当流场为无旋, 即 $\rot{\bf u}={\bf 0}$ 时, 理想流体的 Euler 方程可写为如下形式: $$\bex \cfrac{\p {\bf u}}{\p t}+\n \c ...
- 【Unity]】AR小工具-Vuforia
很有意思的增强现实玩具,六分钟应用. https://www.youtube.com/watch?v=khavGQ7Dy3c
- sublime 浏览器快捷键设置
之前每次忘掉在哪打开,这次认真记一下 菜单栏Preferences-->Package Settings-->Side Bar-->Key Binding-Users [ // ch ...
- mysql 分库分表 ~ 柔性事务
一 定义 TCC方案是可能是目前最火的一种柔性事务方案二 具体 内容 TCC=try(预设)-confrim(应用确认)-canal(回滚取消)三 目的 解决跨服务调用场景下的分布式事务问题,避免使用 ...
- Android Camera MSM HAL
高通新的camera驱动架构设计发生了一些变化,借用互联网上常用的一种结构,大致的原理如此:将camera的所有功能划分为不同的模块,让模块自己来决定自己的事情(高内聚,低耦合),模块需要有统一的接口 ...
- 【原创】Linux基础之用户和组
1 添加.删除用户 # useradd $user# userdel $user 2 设置用户密码 # passwd $user /etc/passwd 3 查看$user的用户和组信息 # id $ ...
- Python-HTTP 概况
前端知识 网页最主要由3部分组成: 结构.表现和行为.网页现在新的标准是W3C,目前模式是HTML.CSS和JavaScript. (1)HTML HTML,全称“Hyper Text Markup ...
- 1.arm的linux系统搭建
从裸板到系统 一般是CPU内部有启动代码,如nuvoton的nuc900系列的芯片内部就有ibr程序,来控制启动过程,在usb启动时负责加载usb驱动,这样在pc端就可以识别到usb设备了,然后通过t ...
- SpringMvc+Hibernate+Mysql保存表情字符(昵称)到数据库报错的问题?
背景: 一个中小型H5游戏 描述: 游戏通过微信授权登入, 获取到用户昵称并将用户信息保存至Mysql数据库, 当遇到有些用户微信昵称中带有表情(特殊字符)时, 保存至数据库出错! 核心错误: Cau ...