标签:
Description
Input
Output
Sample Input
Sample Output
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; int n,m,t,p,ex,ey; char map[10][10]; int yi[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; void dfs(int x,int y,int time) { if (x<1||x>n||y<1||y>m||time>t||p==1) return ; int a=abs(x-ex); int b=abs(y-ey); a+=b; if (a>t-time) return ; if (x==ex&&y==ey&&time==t) { p=1; return ; } for (int i=0;i<4;i++) { int rx=x+yi[i][0]; int ry=y+yi[i][1]; if (map[rx][ry]!=‘X‘) { map[rx][ry]=‘X‘; dfs(rx,ry,time+1); map[rx][ry]=‘.‘; } } return ; } int main() { int i,j,x,y,z,a,b; while (~scanf("%d%d%d",&n,&m,&t)) { z=0; if (n==0&&m==0&&t==0) break; p=0; for (i=1;i<=n;i++) for (j=1;j<=m;j++) { scanf(" %c",&map[i][j]); if (map[i][j]==‘S‘){x=i;y=j;} if (map[i][j]==‘X‘) z++; if (map[i][j]==‘D‘) {ex=i;ey=j;} } a=abs(x-ex); b=abs(y-ey); a+=b; if (m*n-z<=t||a%2!=t%2||a>t) { printf("NO\n"); continue; } map[x][y]=‘X‘; dfs(x,y,0); if (p==0) printf("NO\n"); else printf("YES\n"); } return 0; }
标签:
原文地址:http://www.cnblogs.com/pblr/p/4696299.html