#include<stdio.h> #include<iostream> #include<stdlib.h> #include<string.h> #include<algorithm> using namespace std; char s[100][100]; int flag=-1; int bx[4]={0,0,-1,1};int by[4]={-1,1,0,0},n,m; void dfs(int x,int y,int t) { t--; int i,dx,dy; for(i=0;i<4;i++) { dx=x+ bx[i]; dy=y+by[i]; if(dx<n&&dx>-1&&dy<m&&dy>-1&&s[dx][dy]=='S') { if(t>=0) { s[dx][dy]='X'; printf("YES "); flag=1; }} if(dx<n&&dx>-1&&dy<m&&dy>-1&&s[dx][dy]=='.') { s[dx][dy]='X'; dfs(dx,dy,t); } } } int main() { int t,j,i,dx,dy; while((scanf("%d%d%d",&n,&m,&t)==3)&&(n!=0&&m!=0&&t!=0)){ flag=-1; for(i=0;i<n;i++) for(j=0;j<m;j++) { cin>>s[i][j]; if(s[i][j]=='D'){ dx=i;dy=j; } } dfs(dx,dy,t); if(flag==-1) printf("NO "); } return 0; }
菜鸟写了两个小时的1010题后并没有发现为什么错,懒得找测试数据,贴个wa贴