求助

回复帖子

@JosephDai 2019-02-01 11:08 回复
#include <iostream>
using namespace std;
bool flag[1501][1501][3];
char aa[1501][1051];
int a[1501][1501];
int n,m;
int result=0;
int sx,sy;
int dx[4]={1,0,-1,0};
int dy[4]={0,-1,0,1};
void dfs(int x,int y,int rx,int ry){
    if(result){
        return;
    }
    if(flag[x][y][0] && (flag[x][y][1]!=rx || flag[x][y][2]!=ry)){
        result=1;
        return;
    }
    flag[x][y][1]=rx;
    flag[x][y][2]=ry;
    flag[x][y][0]=1;
    for(int i=0;i<4;i++){
        int x1=(x+dx[i])%n;
        int y1=(y+dy[i])%m;
        int rx1=rx+dx[i];
        int ry1=ry+dy[i];
        if(!a[x1][y1]){
            if(!flag[x1][y1][0] || flag[x1][y1][1]!=rx1 || flag[x1][y1][2]!=ry1){
                dfs(x1,y1,rx1,ry1);
            }
        }
    }
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>aa[i][j];
            if(aa[i][j]=='#'){
                a[i][j]=1;
            }
            if(aa[i][j]=='S'){
                sx=i;
                sy=j;
            }
        }
    }
    dfs(sx,sy,sx,sy);
    if(result){
        cout<<"Yes"<<endl;
    }
    else{
        cout<<"No"<<endl;
    }
    return 0;
}

不知道为什么全是输出“Yes”,应该没问题啊。。。

反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。