码迷,mamicode.com
首页 > 其他好文 > 详细

幻想迷宫(或无限迷宫)——因为逻辑不清而做不出的典型

时间:2017-08-21 22:18:49      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:div   event   using   amp   复制   ret   tac   name   blog   

  我是复制了三块原矩阵。开始时复制了四个,一个方向一个,过了样例但四十分。后来调来调去,判断能否脱出的条件也换了又换,终于……

技术分享
 1 #include<algorithm>
 2 #include<iostream>
 3 #include<cstdlib>
 4 #include<cstring>
 5 #include<string>
 6 #include<vector>
 7 #include<cstdio>
 8 #include<stack>
 9 #include<queue>
10 #include<cmath>
11 #include<map>
12 #include<set>
13 using namespace std;
14 const int N=3012,ax[]={1,-1,0,0},ay[]={0,0,1,-1};
15 struct node{int x,y;};
16 int n,m,sx,sy;
17 bool gr[N][N],res;
18 void dfs(int x,int y){
19     if(res)return;
20     if(x<0||y<0||x>2*n||y>2*m)return;
21     if(gr[x][y]&&!(x==sx&&y==sy))return;
22     if((x%n)==(sx%n)&&(y%m)==(sy%m)&&!(x==sx&&y==sy)){
23         res=true;
24         gr[x][y]=true;
25         return;
26     }
27     gr[x][y]=true;
28     if(gr[(x+1+2*n)%(2*n)][y]==0)dfs((x+1+2*n)%(2*n),y);
29     if(gr[(x-1+2*n)%(2*n)][y]==0)dfs((x-1+2*n)%(2*n),y);
30     if(gr[x][(y-1+2*m)%(2*m)]==0)dfs(x,(y-1+2*m)%(2*m));
31     if(gr[x][(y+1+2*m)%(2*m)]==0)dfs(x,(y+1+2*m)%(2*m));
32 }
33 int main(){
34     while(cin>>n>>m){
35         sx=1,sy=1;
36         res=false;
37         memset(gr,0,sizeof gr);
38         string s[N];
39         for(int i=0;i<n;i++)cin>>s[i];
40         for(int i=0;i<n;i++)
41             for(int j=0;j<m;j++){
42                 if(s[i][j]==#)gr[i][j]=true;
43                 else if(s[i][j]==S)sx=i,sy=j;
44             }
45         for(int i=0;i<n;i++)
46             for(int j=0;j<m;j++)
47                 gr[i+n][j]=gr[i][j+m]=gr[i+n][j+m]=gr[i][j];
48         gr[sx][sy]=true;
49         dfs(sx,sy);
50         cout<<(res?"Yes":"No")<<endl;
51     }
52     return 0;
53 }
Method_01

  洛谷 Yukikaze 988ms

幻想迷宫(或无限迷宫)——因为逻辑不清而做不出的典型

标签:div   event   using   amp   复制   ret   tac   name   blog   

原文地址:http://www.cnblogs.com/duskfire/p/7406952.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!