题目链接


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

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

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

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

所以只用在原图上跑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;
else
cout<<"No"<<endl;
found=false;
}
}

[P1363] 幻想迷宫的更多相关文章

  1. 【洛谷】【搜索(dfs)】P1363 幻想迷宫

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

  2. 洛谷 P1363 幻想迷宫 解题报告

    P1363 幻想迷宫 题目描述 背景 Background (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫.) WD:呜呜,肿么办啊-- LHX:mo ...

  3. 络谷 P1363 幻想迷宫

    P1363 幻想迷宫 题目描述 背景 Background (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫.) WD:呜呜,肿么办啊…… LHX:mo ...

  4. 洛谷P1363 幻想迷宫

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

  5. 洛谷 P1363 幻想迷宫

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

  6. 洛谷P1363 幻想迷宫【dfs】

    题目:https://www.luogu.org/problemnew/show/P1363 题意: 有一个地图,起点是S,障碍物用#表示.可以将这个地图不断的在四周重复,问从起点开始是否可以走到无限 ...

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

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

  8. 【洛谷 P1363】幻想迷宫(搜索)

    这题其实可以很简单. 题目叫做"幻想迷宫",那么我们就幻想一个迷宫. 借用一下@FancyDreams的图片 只有左上角第一个\(5*4\)的迷宫是真的, 其他都是我们幻想出来的. ...

  9. [LuoguP1363]幻想迷宫

    [LuoguP1363]幻想迷宫(Link) 现在有一个迷宫,从迷宫边界的任意一点可以走到对面,即:若都是路面,则可以从\((1, i)\)走到\((N, i)\).其余情况依旧.问是否可以从指定的起 ...

随机推荐

  1. vue-基于elementui自定义主题更换皮肤及自定义内容的皮肤跟换

    参考这篇博客https://blog.csdn.net/young_Emily/article/details/78591261做一遍,加上自己的一些理解 思路:通过自己上一篇博客https://ww ...

  2. vue 中使用driver.js来进行页面分步引导

    Driver.js 推荐15款最佳的 jQuery 分步引导插件 11 个超棒的 jQuery 分步指引插件

  3. 转 Comparison of Red Hat and Oracle Linux kernel versions and release strings

    Originally derived from Red Hat Enterprise Linux (RHEL), Oracle Linux (OL) contains minor difference ...

  4. Vue 参数传递及刷新后依旧存在

    获取参数方式有两种: 1.params2.query 第一种方式: params this.$router.push({name:'Hello',params:{name:'zs',age:'22'} ...

  5. IP分片 与 TCP分段的区别 !!!!careful========以及udp中一个包大小究竟为多大合适 ==========三次握手四次挥手细节

    首先声明:TCP分片应该称为TCP分段 TCP/IP详解--TCP的分段和IP的分片 分组可以发生在运输层和网络层,运输层中的TCP会分段,网络层中的IP会分片.IP层的分片更多的是为运输层的UDP服 ...

  6. KeyStore相关

    http://blog.csdn.net/liuquan0071/article/details/50318405 一. HTTPS概念 1. 简介 HTTPS(全称:Hypertext Transf ...

  7. Oracle基础篇--01数据库控制语言DCL

    数据库控制语言,是用户对数据的权限控制语言. 通过GRANT语句进行赋权,通过REVOKE撤回权限.数据库的权限包括2种,一种是数据库系统权限,一种是数据库对象权限.在控制语言里面,存在2个概念, 1 ...

  8. str 操作方法

    # str 类,字符串 # name ='alex' # 首字母变大写 # test ='alex' # v= test.capitalize() # print(v) # # 大写全部变小写 # t ...

  9. 性能测试工具LoadRunner18-LR之Controller 集合点

    含义 当通过controller虚拟多个用户执行该脚本时.用户的启动或运行步骤不一定是同步的.集合点是在脚本的某处设置一个标记.当有虚拟用户运行到这个标记时,停下等待,直到所有用户都达到这个标记时,再 ...

  10. Surface Shader(表面着色器)

    Shader "Custom/Surface_Shadeer" { Properties {                                             ...