codevs 1215 迷宫

来源:互联网 发布:多得美工学院b段班 编辑:程序博客网 时间:2024/05/16 11:45

深度优先搜索

#include <iostream>#include <cstdio>#include <cmath>#include <cstring>using namespace std;int mapp[17][17];int m,n;bool pd=0;void search(int x,int y){                         if(mapp[x][y]==3){        cout<<"YES"<<'\n';        pd=1;        return;    }    mapp[x][y]=1;                  //表示已经走过了     if(mapp[x][y+1]==0||mapp[x][y+1]==3)search(x,y+1);    if(pd)return;    if(mapp[x+1][y]==0||mapp[x+1][y]==3)search(x+1,y);    if(pd)return;    if(mapp[x-1][y]==0||mapp[x-1][y]==3)search(x-1,y);    if(pd)return;    if(mapp[x][y-1]==0||mapp[x][y-1]==3)search(x,y-1);}int main(){    cin>>m;    char temp;    for(int o=1;o<=m;++o){        pd=0;        cin>>n;        memset(mapp,-2,sizeof(mapp));       //-2表示地图外         for(int i=1;i<=n;++i){            for(int j=1;j<=n;++j){                cin>>temp;                  //读入地图                 if(temp=='.'){                    mapp[i][j]=0;                }                if(temp=='#'){                    mapp[i][j]=1;           //1表示墙                 }                if(temp=='s'){                    mapp[i][j]=0;                }                if(temp=='e'){                    mapp[i][j]=3;            //3表示终点                 }            }        }        search(1,1);        if(pd==0)cout<<"NO\n";    }    return 0;}
原创粉丝点击