这道题是一道DFS练习题,其实说实话这道题难度还行,不算太难
上代码!
#include<iostream>
#include<string>
using namespace std;
string map[10];
bool vis[10][9];
int n,m;
int step[8][2]={{2,1},{1,2},{-1,2},{-2,1},{-2,-1},{-1,-2},{1,-2},{2,-1}};
bool in(int x,int y)
{
return 0<=x&&x<10&&0<=y&&y<9;
}
bool dfs(int x,int y)
{
if(map[x][y]=='T')
{
return true;
}
vis[x][y]=true;
for(int i=0;i<8;i++)
{
int x2=x+step[i][0];
int y2=y+step[i][1];
if(in(x2,y2)&&map[x2][y2]!='#'&&!vis[x2][y2])
{
if(dfs(x2,y2))
{
return true;
}
}
}
return false;
}
int main()
{
for(int i=0;i<10;i++)
{
cin>>map[i];
}
int x,y;
for(int i=0;i<10;i++)
{
for(int j=0;j<9;j++)
{
if(map[i][j]=='S')
{
x=i;
y=j;
}
}
}
if(dfs(x,y))
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
}