典型的dfs问题,直接套模版就好,弄一个visited数字完全解决问题。
#include<iostream>
#include<vector>
#include<string>
#include<map>
#include<set>
using namespace std;
int num;
bool helper(int x,int y,vector<vector<char>>&mi,vector<vector<char>>&visited)
{
if(x>=num||y>=num||x<0||y<0)
return false;
if(mi[x][y]=='e')
return true;
if(mi[x][y]=='#')
return false;
if(visited[x][y])
return false;
visited[x][y]=true;
return helper(x+1, y, mi,visited)||helper(x, y+1, mi,visited)||helper(x-1, y, mi,visited)||helper(x, y-1, mi,visited);
}
//pair<int,int>temp;
int main()
{
cin>>num;
vector<vector<char>>mi(num,vector<char>(num));
vector<vector<char>>visited(num,vector<char>(num));
for(int i=0;i<num;++i)
{
for(int j=0;j<num;++j)
{
cin>>mi[i][j];
visited[i][j]=false;
}
}
if(helper(0, 0, mi,visited))
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}