标签:
#include<iostream> #include<cmath> #include<cstring> using namespace std; int n,m,t; char data[10][10]; int ki,kj,zi,zj,wall,flag; int to[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; void dfs(int i,int j,int cnt) { if(i<1||j<1||i>n||j>m) return ; if(cnt==t&&i==zi&&j==zj) flag=1; if(flag==1) return ; int s1=i-zi; int s2=j-zj; if(s1<0) s1=-s1; if(s2<0) s2=-s2; int tem=t-cnt-s1-s2; if(tem<0||tem&1) return ; for(int k=0;k<4;k++) { int xi,xj; xi=i+to[k][0]; xj=j+to[k][1]; if(data[xi][xj]!=‘X‘) { data[xi][xj]=‘X‘; dfs(xi,xj,cnt+1); data[xi][xj]=‘.‘; } } return ; } int main() { while(cin>>n>>m>>t) { if(n==0&&m==0&&t==0) break; wall=0; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { cin>>data[i][j]; if(data[i][j]==‘S‘) { ki=i;kj=j; } else if(data[i][j]==‘D‘) { zi=i;zj=j; } else if(data[i][j]==‘X‘) wall++; } if(n*m-wall<t) { cout<<"NO"<<endl; continue; } flag=0; data[ki][kj]=‘X‘; dfs(ki,kj,0); if(flag) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
标签:
原文地址:http://www.cnblogs.com/nefu929831238/p/5515781.html