洛谷 P1605 迷宫

题目链接

https://www.luogu.org/problemnew/show/P1605


题目背景

迷宫


题目描述

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

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

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


输入输出格式

输入格式:

【输入】

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

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

输出格式:

【输出】

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

案总数。

【数据规模】

1≤N,M≤5


思路

一道连小小小小(此处省略999999个小)蒟蒻都会的搜索水题,却卡了我大半个小时......

原因就是边界条件忘记判断了......(不对,还RE了几次)

建立二维BOOL数组a和vis,a数组表示大地图(赋初值后不再改变),而vis数组则是每次搜索时进行标记和回溯的数组

按要求输入,并将障碍点全部标记为true,不要忘记把起始点也标记为true,然后进行搜索,判断即可

如果搜到了(fx,fy)这个点,就让tot++,最后输出即可


代码

#include<bits/stdc++.h>//还是懒人头文件
using namespace std; int n,m,t;
bool a[][],vis[][];
int x,y;
int sx,sy,fx,fy;//题目要求输入的对象
int f[][]= {{,,},{,,},{,,-},{,,},{,-,}};
int tot=;//答案 /*
inline int read() {
char ch=getchar();
int x=0,f=1;
while(ch<'0'||ch>'9') {
if(ch=='-');
f=-1,ch=getchar();
}
while(ch>='0'&&ch<='9') {
x=x*10+ch-48,ch=getchar();
}
return x*f;
}
*/ void dfs(int x,int y) {
if(x==fx&&y==fy) {//找到了就加一再回溯
tot++;
return;
}
for(int i=; i<=; i++) {
int nx=x+f[i][];
int ny=y+f[i][];
if(nx>&&ny>&&nx<=n&&ny<=m&&!a[nx][ny]&&!vis[nx][ny]) {
vis[nx][ny]=true;
dfs(nx,ny);
vis[nx][ny]=false;
}
}
} int main() {
memset(a,false,sizeof(a));
scanf("%d%d%d",&n,&m,&t);
scanf("%d%d%d%d",&sx,&sy,&fx,&fy);
a[sx][sy]=true;//出发点为true
while(t--) {
scanf("%d%d",&x,&y);
a[x][y]=true;
}
dfs(sx,sy);//搜索
cout<<tot<<endl;
return ;
}

洛谷 P1605 迷宫的更多相关文章

  1. 洛谷—— P1605 迷宫

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

  2. 洛谷P1605 迷宫——S.B.S.

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

  3. 洛谷P1605 迷宫 (DFS)

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

  4. 洛谷P1605 迷宫【dfs】

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

  5. 洛谷P1605 迷宫

    迷宫 题目链接 这道题就是一道简单的dfs计方案数qwq. 我的思路是把表初始化为1,再将障碍改为0,因为在全局定义中数组会直接初始化为0,所以就少去了对边界的特判. next数组加循环可以减少代码量 ...

  6. 洛谷P1605 迷宫 深度搜索 模板!

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

  7. (Java实现) 洛谷 P1605 迷宫

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

  8. 洛谷 p1605 迷宫问题 详解

    题解:dfs搜索 #include <iostream> #include <algorithm> #include <cstring> #include < ...

  9. 迷宫 洛谷 p1605

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

随机推荐

  1. SAP MM GR-based IV, 无GR不能IV?

    SAP MM GR-based IV, 无GR不能IV? 如下的采购订单, 没有做过收货, ITEM的details里却勾选了’GR-Bsd IV’ 选项. 此时试图直接针对该PO#450260713 ...

  2. 在 Apex 中使用合并统计查询

    SOQL 中的合并统计查询 在 SOQL 中,我们可以使用一系列函数来进行合并统计查询.它们的功能和标准 SQL 中的 SUM(),COUNT() 等函数类似. 官方文档 Apex 中使用合并统计查询 ...

  3. (办公)Spring boot(系列)的返回json封装类

    package com.imooc.util; import com.fasterxml.jackson.databind.ObjectMapper; /** * 自定义响应数据结构: * 这个类是提 ...

  4. mysql之变量

    本文内容: 系统变量 用户变量 局部变量 首发日期:2018-04-18 系统变量: 系统变量就是系统已经提前定义好了的变量 系统变量一般都有其特殊意义.比如某些变量代表字符集.某些变量代表某些mys ...

  5. tkinter之grid布局管理器详解

    在很久之前,我发过一篇<tkinter模块常用参数>,里面已经几乎涵盖了tkinter的大部分教程. 好吧,其实也就是上一篇而已啦. 所谓布局,就是指控制窗体容器中各个控件(组件)的位置关 ...

  6. MySQL中lock tables和unlock tables浅析

    MySQL中lock tables和unlock tables浅析   在MySQL中提供了锁定表(lock tables)和解锁表(unlock tables)的语法功能,ORACLE与SQL Se ...

  7. 如何下载 Google Play 应用的apk

    Google Play 不能直接下载apk安装包,解决办法,安装插件下载 第一步 FQ就不说了 第二步 安装google浏览器 APK Downloader插件 第三步 打开Google play网站 ...

  8. java求解第N个素数(质数)

    面试中,遇到一个题目:求解第N个素数. import java.util.Scanner; public class GetPrimeNumber { public static int NthPri ...

  9. wamp 中安装cakephp Fatal error: You must enable the intl extension to use CakePHP. in XXX

    今天在wamp下安装cakephp3.x的时候,报出这么一条错误:Fatal error: You must enable the intl extension to use CakePHP. in ...

  10. Docker 从入门到实践(二)Docker 三个基本概念

    一.Docker 的三个进本概念? 了解 Docker 的三个基本概念,就可以大致了解 Docker 的生命周期. 镜像(Image) 容器(Container) 仓库(Repository) 二.镜 ...