codevs 1215 迷宫 广搜bfs 深搜dfs

来源:互联网 发布:淘宝买手机哪家店好 编辑:程序博客网 时间:2024/06/07 06:28

题目链接:http://codevs.cn/problem/1215/

一个纯广搜的题目.广搜和深搜都可以

广搜代码如下

#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;int main(){ int num,n,x0,y0,x1,y1,x2,y2,x3,y3,flag,dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};queue<pair<int,int> > st;char a[20][20];cin>>num;while(num--){    cin>>n;    flag=1;    memset(a,0,sizeof(a));    for(int i=0;i<n;i++){        cin>>a[i];        for(int j=0;j<n;j++)            if(a[i][j]=='s')                x0=i,y0=j;                else                    if(a[i][j]=='e')                    x1=i,y1=j;}//cout<<x0<<y0<<endl<<x1<<y1<<endl;st.push(make_pair(x0,y0));a[x0][y0]='#';while(!st.empty()){        x2=st.front().first;        y2=st.front().second;        if(x2==x1&&y2==y1){            cout<<"YES"<<endl;            flag=0;            break;        }        st.pop();        for(int i=0;i<4;i++){            x3=x2+dir[i][0];            y3=y2+dir[i][1];            if(x3>=0&&y3>=0&&x3<n&&y3<n&&a[x3][y3]!='#'){                st.push(make_pair(x3,y3));                a[x3][y3]='#';            }        }}if(flag) cout<<"NO"<<endl;while(st.empty())    st.pop();}}
1 0
原创粉丝点击