#include <bits/stdc++.h>
using namespace std;
int n,m,f=0;
char s[20][20];//定义数组
int vis[100][100];//标记数组
int qx,qy,zx,zy,x,y,z;
int dir[4][2]{{-1,0},{1,0},{0,-1},{0,1}};//方向数组
void dfs(int x,int y,int st){
if(s[x][y]=='D'){
if(st<=z){
f=1;
return;
}
}
if(f) return;
for(int i=0;i<4;i++){
int tx=dir[i][0]+x;
int ty=dir[i][1]+y;
if(tx >= 1 && tx <= n && ty >= 1 && ty <= m &&!vis[tx][ty]&& (s[tx][ty]=='.'||s[tx][ty]=='D')){//判断能不能走
vis[tx][ty]=1;
dfs(tx,ty,st+1);
vis[tx][ty]=0;//回溯
}
}
return;
}
int main(){
cin>>n>>m>>z;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>s[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(s[i][j]=='S'){
dfs(i,j,0);
}
}
}
if(f==1) cout<<"YES";
else cout<<"NO";
return 0;
}
参与讨论
(Participate in the discussion)
参与讨论