题目链接


很好的一道搜索题,应该是利用了离散化的思想我好蒟蒻呀

地图是根据给定的图无限的拼接的。

所以说暴力建图是不可取的。

其实不难看出,在跨越两张图时。我们就可以看做这个点时空穿梭一般。从底下回来了。

所以只用在原图上跑dfs觉可以了。

那怎么判断是否在同一张图内被遍历了呢?
又这么判断同一个点在不同的图中是否被遍历了呢?

我们可以将他最近被遍历的原坐标(在无限的地图中的坐标)记录下来

如果一个点在一次被遍历时,如果这个点上一次被遍历到时的原坐标不等于现在的坐标。那么就找到了解

很好的题
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
bool map[1600][1600];
bool found;
int vis[1600][1600][2];
bool used[1600][1600];
int n,m;
int dx[4]={0,0,-1,1};
int dy[4]={-1,1,0,0};
int turn[2]={1,0};
void dfs(int x,int y,int rx,int ry)
{if(used[x][y]&&(vis[x][y][0]!=rx||vis[x][y][1]!=ry)){found=true;return ;}if(used[x][y]&&vis[x][y][0]==rx&&vis[x][y][1]==ry)return ;used[x][y]=true;vis[x][y][0]=rx;vis[x][y][1]=ry;int x1,y1,x2,y2;for(int i=0;i<=3;i++){x1=x+dx[i];x2=rx+dx[i];y1=y+dy[i];y2=ry+dy[i];if(x1>n)    x1-=n;if(x1<1)    x1+=n;if(y1>m)    y1-=m;if(y1<1)    y1+=m;if(map[x1][y1])dfs(x1,y1,x2,y2);if(found)return ;}
}
int main()
{cin.sync_with_stdio(false);char in;int begin,end;while(cin>>n>>m){memset(map,0,sizeof(map));memset(vis,0,sizeof(vis)); memset(used,0,sizeof(used));for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){cin>>in;switch(in){case 'S':begin=i;end=j;map[i][j]=true;break;case '.':map[i][j]=true;break;case '#':map[i][j]=false;break;}}dfs(begin,end,begin,end);if(found)cout<<"Yes"<<endl;elsecout<<"No"<<endl;found=false;}
}

转载于:https://www.cnblogs.com/Lance1ot/p/8575944.html

[P1363] 幻想迷宫相关推荐

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

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

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

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

  3. 【洛谷】P1363 幻象迷宫

    幻象迷宫可以认为是无限大的,不过它由若干个N*M的矩阵重复组成.矩阵中有的地方是道路,用'.'表示:有的地方是墙,用'#'表示.LHX和WD所在的位置用'S'表示.也就是对于迷宫中的一个点(x,y), ...

  4. 洛谷P1363幻象迷宫

    问题描述 (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫.) WD:呜呜,肿么办啊-- LHX:momo...我们一定能走出去的! WD:嗯,+U+U ...

  5. 洛谷 1363【幻想迷宫】

    (其实我不知道算原创还是转载) 题目大意: 现有一个无限大的迷宫,是由无限个n*m的相同矩阵单位组成的,迷宫中有路和墙.给出这个矩阵单位和起点,问能不能走到离起点无穷远的地方. 这题题目还是看懂了,但 ...

  6. 【Luogu1363】幻想迷宫

    problem solution codes //语文题,这很好 last submit #include<iostream> #include<cstring> using ...

  7. DFS + BFS + 洛谷题

    DFS 经典的迷宫问题( 回溯 问题 ) 在起点处有四个方向,上下左右, 走到终点之后,要再返回,看有没有其他更短的路径. 回溯过程,退回之后,要标记该点的值为没有访问过. 直到找到最短的路径. 左右 ...

  8. 淘汰赛表格制作_2011年电子表格日挑战赛

    淘汰赛表格制作 It's hard to believe that a year has passed already, and it's only a week until Spreadsheet ...

  9. kof97 逆向分析_指令输入系统

    I/O 指令输入系统 1.在主循环中通过0x30000和0x340000找到0x9F68 0x9F68 翻译 UpdateP1P2KeyState 0x9F68是从IO的0x300000.0x3400 ...

最新文章

  1. MySQL said: Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen
  2. freertos 定时器 不启动_FreeRTOS 从入门到精通8--软件定时器应用
  3. 删除A数据表中的一行数据时,不小心将表名写成了B,现在想恢复B中刚删除的的着一行数据怎么办...
  4. charles抓包ios抓拍教程
  5. TensorFlow实验(3)
  6. 吴恩达机器学习练习4:神经网络学习(损失函数和正则化)
  7. java se拖动插件_JQuery之拖拽插件
  8. 如何提取左声道音频_TRS? TRRS? 正式录制前,您确保麦克风的音频线插对了吗?...
  9. java中final用法
  10. 智能优化算法:细菌觅食优化算法 - 附代码
  11. c语言题目详解——打印3的倍数的数
  12. 标准误(Standard Error)
  13. 【推荐】超级好用的打印插件Lodop使用笔记 动态赋值 打印模板解决方案
  14. 如何快速查看电脑的IP和MAC
  15. Linux使用alias设置命令别名
  16. diagrams 一个完全可以代替visio的软件
  17. 代谢组学结果在线分析:不同组差异代谢物高级韦恩图Venn的绘制——UpSet图
  18. Word 表格顶页 处理办法
  19. MRCC和SRCC的理解
  20. windows7系统无法开机显示丢失volmgrx.sys驱动文件

热门文章

  1. UVALive5389 UVA414 POJ1493 ZOJ1339 Machined Surfaces
  2. SMTPDiag 诊断工具
  3. mysql 按照指定顺序排序
  4. 配置字段(居左,居中,居右,高度自适应)
  5. 经典的《JavaScript 权威指南》中的“对象”不经典
  6. 【Android】换肤技术讲解
  7. Android必知必会-Android Studio下配置和使用Lambda
  8. RecyclerView显示加载多种布局的原理
  9. 自己动手写C语言编译器(2)
  10. 算法---------宝石与石头