(其实我不知道算原创还是转载)

题目大意:

现有一个无限大的迷宫,是由无限个n*m的相同矩阵单位组成的,迷宫中有路和墙。给出这个矩阵单位和起点,问能不能走到离起点无穷远的地方。

这题题目还是看懂了,但是提交了不下20次才AC,还看了两个大佬的题解

不愧是蓝题

一开始用了BFS,然后WA,看题解发现好多大佬都用DFS,于是就改了,结果AC+WA+TLE+MLE+RE。。。。。。

最后顺便学到了一个新颖的判重方法!

最终的AC代码:

#include<iostream>
#include<cstring>
using namespace std;
int n,m,fx,fy;
bool valid[1515][1515],flag; //valid[x][y]表示(x,y)这个方格能不能通过(节约空间)
int vis[1515][1515][3]; //vis[x][y][0]表示上一个映射到(x,y)的点的x坐标,vix[x][y][1]表示y坐标,vis[x][y][2]若为-1表示没有被映射到过,1表示有
const int d[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; //控制方向
void dfs(int x,int y,int mapx,int mapy){if(vis[mapx][mapy][2]!=-1){if(vis[mapx][mapy][0]!=x || vis[mapx][mapy][1]!=y) flag=true; //如果这个点与上一个映射到同一个点的点不是同一个,那么是可以无限走下去的(按从上一个点走的这一个点的方式走到下一个点)return; //否则属于重复搜索}vis[mapx][mapy][0]=x;vis[mapx][mapy][1]=y;vis[mapx][mapy][2]=1; //记录int tox,toy;for(int i=0;i<4 i++){tox=((mapx+d[i][0])%n+n)%n;toy=((mapy+d[i][1])%m+m)%m;"if(valid[tox][toy]) dfs(x+d[i][0],y+d[i][1],tox,toy);if(flag) return; //剪枝(吗?)可以走到就不必继续搜了(当时没加这一句就TLE+MLE)}
}
int main(){int i,j;char ch;while(cin>>n>>m){fx=fy=-1;memset(valid,0,sizeof(valid));memset(vis,-1,sizeof(vis)); //初始化for(i=0;i<n;i++)for(j=0;j<m;j++){if(ch=='S'){fx=i;fy=j;valid[i][j]=true;}if(ch=='.') valid[i][j]=true; //设置可不可以走}flag=false;dfs(fx,fy,fx,fy);if(flag) cout<<"Yes"<<endl;else cout<<"No"<<endl;}return 0;
}

洛谷 1363【幻想迷宫】相关推荐

  1. 伪题解 洛谷 P1363 幻想迷宫(DFS)

    毒瘤题,做了一晚上抄题解A了 因为是抄题解,我也不好意思说什么了,就发篇博客纪念一下吧 #include<iostream> #include<cstring> #includ ...

  2. 洛谷 P1238 走迷宫【搜索】【DFS】

    洛谷 P1238 走迷宫 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 洛谷 P1238 走迷宫 二.题目分析 (一)算法标签 搜索 DFS ( ...

  3. 2019.03.04【ZJOI2018】【BZOJ5213】【洛谷P4339】迷宫(自动机)(数论)

    BZOJ传送门 洛谷传送门 解析: 这道题本质其实是要最小化一个能够接受所有mmm进制下KKK的倍数的自动机. 显然我们有一个方案就是KKK个节点,iii的第jjj条边向(i∗m+j)%K(i*m+j ...

  4. 洛谷P1605:迷宫(DFS)

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

  5. 洛谷P1141 01迷宫

    因为各种乱七八糟的原因,学搜索实在是学了太久了也咕了好久博客啊.准备再做一遍之前写过的题顺便补一下博客qwq 01迷宫 [题目链接](https://www.luogu.org/problemnew/ ...

  6. 洛谷P1238 走迷宫

    走迷宫 题目链接 这道题第一次写的时候写了好久,因为不会写输出qwqwq,于是让某苦力调了两天一个对的程序. 还有这道题需要另外注意的地方是它对顺序有要求,并且一定要分清你的横纵坐标和行列是不一样的. ...

  7. 洛谷——P1238 走迷宫

    题目描述 有一个m×n 格的迷宫(表示有 m 行.n 列),其中有可走的也有不可走的,如果用 1 表示可以走,0表示不可以走,文件读入这 m×n 个数据和起始点.结束点(起始点和结束点都是用两个数据来 ...

  8. 洛谷P1363 幻象迷宫(DFS)

    输入样例#1: 5 4 ##.# ##S# #-# #.## #-# 5 4 ##.# ##S# #-# -#. #.## 输出样例#1: Yes No 大概就是说给出一个01迷宫类的地图,按照这个地 ...

  9. 洛谷P1141 01迷宫【记忆化搜索】

    题目链接:P1141 01迷宫 程序说明: 可以用bfs来做,但是数据毒瘤,如果每次询问都运行一次bfs,会有三个TLE..可以将路途经过的点储存起来并且记录答案,如果询问的点已经被记录了答案,直接输 ...

最新文章

  1. JavaScript实现找出买卖股票的最大利润算法(附完整源码)
  2. Android 给TextView中的字体加上“中间线”
  3. 谷歌浏览器任务栏图标变白色解决方法
  4. python社团宣传语_宣传语_Python语言及其应用_红黑联盟读书频道
  5. 计算机键盘的标点怎么打出来,电脑键盘上的标点符号怎么打(教你如何输入正确的标点符号)...
  6. Unity shader 实现圆角矩形
  7. 福昕阅读器无法注释的解决
  8. javascript事件触发器
  9. mysql安装完为什么打不开_mysql安装打不开怎么办
  10. Privacy Definitions - (alpha, beta)-privacy
  11. 移动端长按文本选择复制
  12. js动态添加带圆圈序号列表
  13. 设计原则—SOLID(SRP)
  14. 【高并发趣事二】——JMM及程序中的幽灵
  15. 丅rust是什么意思_Rust入坑指南:亡羊补牢
  16. 千万别让“预期收益”给忽悠了
  17. 数据探索与可视化(R的DataExplorer包)
  18. mac 全角/半角标点符号切换
  19. 自制基于arduino的GPS地图导航系统 原型
  20. python安装凸优化求解库cvxpy出现failed building wheel for scs

热门文章

  1. STM32看门狗配置说明
  2. 登录界面 动画背景效果
  3. 【Python入门】Turtle海龟库:利用海龟画笔绘制花瓣轮廓
  4. springboot小型超市商品展销系统 毕业设计源码01635
  5. 随笔:写软件,应该有点专业精神
  6. python爬取bilbili信息(二)
  7. 【华为OD机试 2023最新 】 最大报酬(C++ 100%)
  8. 路由器能运行linux程序么,用Linux系统做路由器
  9. 水滴石穿oracle之脚本安装
  10. iOS开发手机震动效果