标签:des blog http io ar os sp for strong
Description
Input
Output
Sample Input
Sample Output
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<string> #include<cstdlib> #include<algorithm> #include<queue> #include<vector> #include<set> using namespace std; int n,m,t,sx,sy,ex,ey; int dic[4][2]={{0,1},{0,-1},{-1,0},{1,0}}; char s[10][10]; bool flag,vis[10][10]; bool check(int x,int y) { if(x<0||x>=n||y<0||y>=m||vis[x][y]||s[x][y]==‘X‘) return false; return true; } void dfs(int x,int y,int step) { if(flag) return ; if(step+abs(x-ex)+abs(y-ey)>t) return ; if((t-step-abs(x-ex)-abs(y-ey))%2!=0||t-step<0) return ; if(x==ex&&y==ey&&step==t) { flag=true; return ; } for(int i=0;i<4;i++) { int xx,yy; xx=x+dic[i][0],yy=y+dic[i][1]; if(check(xx,yy)) { vis[xx][yy]=1; dfs(xx,yy,step+1); if(flag) return ; vis[xx][yy]=0; } } return ; } int main() { while(scanf("%d%d%d",&n,&m,&t)!=EOF) { memset(vis,0,sizeof(vis)); flag=false; if(n==0&&m==0&&t==0) break; for(int i=0;i<n;i++) scanf("%s",s[i]); for(int i=0;i<n;i++) for(int j=0;j<m;j++) { if(s[i][j]==‘S‘) sx=i,sy=j; else if(s[i][j]==‘D‘) ex=i,ey=j; } vis[sx][sy]=1; dfs(sx,sy,0); if(flag) printf("YES\n"); else printf("NO\n"); } return 0; }
标签:des blog http io ar os sp for strong
原文地址:http://www.cnblogs.com/a972290869/p/4166198.html