P1605 迷宫
P1605 迷宫
这是一道毒瘤题。。。
这是一道广搜题 bfs 。。。
注释:
1.memcpy(b,a,sizeof(a))
把 a 的值全部复制给 b
memcpy(b,a,sizeof(int)*k)
把 a 中的 k 个元素复制给 b
头文件:#include<cstring>
代码:
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstring>
#include<queue>
using namespace std;
int n,m,t,sx,sy,fx,fy,tx,ty,ans=;
bool vis[][]; //表示是否为墙
int dx[]={-,,,},
dy[]={,,-,};
struct pos //结构体 x代表横坐标,y代表纵坐标,used[][]代表是否走过
{
int x,y,used[][]; };
bool pan(int x,int y) //判断是否合法
{
return x>=&&x<=n&&y>=&&y<=m&&vis[x][y]==;
} pos sa;
void bfs()
{
queue<pos>q; //队列
sa.x=sx;
sa.y=sy;
sa.used[sx][sy]=; //标记已走
q.push(sa); //入队
while(!q.empty())
{
pos h=q.front();
q.pop(); //出队
for(int i=;i<=;i++)
{
int xx=h.x+dx[i];
int yy=h.y+dy[i];
if(h.used[xx][yy]||(!pan(xx,yy))) //不可以走
continue ;
if(xx==fx&&yy==fy) //到终点
{
ans++;
continue ;
} sa.x=xx;
sa.y=yy;
memcpy(sa.used,h.used,sizeof(h.used)); //鬼知道这是干什么哒(我知道了)注释1
sa.used[xx][yy]=;
q.push(sa); //新的入队 }
}
}
int main()
{
cin>>n>>m>>t;
cin>>sx>>sy>>fx>>fy;
for(int i=;i<=t;i++)
{
cin>>tx>>ty;
vis[tx][ty]=;
} bfs(); //广搜 cout<<ans; return ; }
这还是一道深搜题 dfs 。。。
回顾一下递归回溯算法框架:
int search(int x,int y)
{
if(到目的地) 输出解;
else
for(int i=;i<=算符种数;i++)
{
if(符合条件)
{
保存结果;
search(下一层);
恢复:保存结果之前的状态{回溯};
}
}
}
代码:
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstring>
#include<queue>
using namespace std;
int n,m,t,sx,sy,fx,fy,tx,ty,ans=;
bool vis[][];
int dx[]={-,,,},
dy[]={,,-,};
bool pan(int x,int y)
{
return x>=&&x<=n&&y>=&&y<=m&&vis[x][y]==;
} void dfs(int x,int y)
{
if(x==fx&&y==fy)
ans++; for(int i=;i<=;i++)
{
int xx=x+dx[i];
int yy=y+dy[i];
if(pan(xx,yy))
{
vis[xx][yy]=;
dfs(xx,yy);
vis[xx][yy]=;
}
}
}
int main()
{
cin>>n>>m>>t;
cin>>sx>>sy>>fx>>fy;
for(int i=;i<=t;i++)
{
cin>>tx>>ty;
vis[tx][ty]=;
}
vis[sx][sy]=;
dfs(sx,sy); cout<<ans; return ; }
P1605 迷宫的更多相关文章
- 洛谷 P1605 迷宫
题目链接 https://www.luogu.org/problemnew/show/P1605 题目背景 迷宫 题目描述 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 ...
- 洛谷—— P1605 迷宫
P1605 迷宫 题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在 ...
- 洛谷P1605 迷宫——S.B.S.
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...
- 【搜索1】P1605 迷宫
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...
- (DFS)P1605 迷宫 洛谷
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...
- P1605 迷宫 dfs回溯法
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...
- 洛谷P1605 迷宫 (DFS)
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...
- 洛谷P1605 迷宫【dfs】
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...
- P1605 迷宫(洛谷)
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫中移动有上下左右 ...
随机推荐
- macOS Sierra 10.12.6 odoo 10.0 开发环境配置
参考了网上的一些教程,将最终过程记录一下,其中需要的一些程序,我已经放到百度网盘: https://pan.baidu.com/s/1boKHSTL 1.抹盘安装macOS Sierra 10.12. ...
- 【Zookeeper系列】ZooKeeper管理分布式环境中的数据(转)
原文地址:https://www.cnblogs.com/sunddenly/p/4092654.html 引言 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它 ...
- 【Python】安装error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools"
pip install Scrapy --> error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft ...
- intelj idea Database视图竟然还悄悄开进程,不能忍
一.前言 偶然发现,任务管理器里有个莫名其妙的java进程.看了下启动参数: CommandLine="C:\Program Files\Java\jdk1.8.0_172\bin\java ...
- springmvc中为我们做了什么
这应该是每个使用框架的人应该自问的.这就要从没有使用框架时说.在没用框架开发web应用时,自己是怎么开发的,就是写servlet,jsp. 使用springmvc后,使用Controller注解,其实 ...
- 使用stylus
1. 首先确保 node + npm 环境一切正常. 2. 全局安装 stylus: 在命令行中: npm i stylus@latest -g 3. 此时可以创建 .s ...
- oracle sqlplus命令详解
涉及到的知识要点 a.带有一个&的替换变量的用法b.带有两个&的替换变量用法c.define命令用法d.accept命令用法e.定制SQL*Plus环境f.在glogin.sql文件中 ...
- mysql拿webshell总结
1.select '<?php eval($_POST[jumbo]) ?>' into outfile '/var/www/jumbo.php'; 2.select '<?php ...
- 9、BOM (浏览器对象模型)
1.认识BOM js 三个部分: 1.ECMAScript标准 ECMA5 ECMA6 2.BOM Browser Object Model 浏览器对象模型 3.DOM 文档对象类型 window对象 ...
- 不偏移的天地图地图服务-ArcGIS版
地图偏移和纠偏是使用在线电子地图不可避免的话题.研究不深入,暂且分享一种已纠偏的地图服务. 服务地址 直接放点干货: 影像地图: http://t0.tianditu.com/cia_w/esri/w ...