标签:ase esper arc appear title lock ++ 相同 地方
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 129289 Accepted Submission(s): 34906
#include <cstdio> #include <iostream> #include <algorithm> #include <cstring> using namespace std; typedef long long ll; char map1[35][35]; int dir[4][2]={1,0,-1,0,0,1,0,-1}; int vis[35][35]; int n,m,t,sx,sy,ex,ey,flag; int check(int x,int y) { if(x>=0&&x<n&&y>=0&&y<m&&!vis[x][y]&&map1[x][y]!=‘X‘) return 1; return 0; } void dfs(int x,int y,int step) { if(flag==1)return; if(step>t)return; if(x==ex&&y==ey&&step==t) { flag=1; return; } for(int i=0;i<4;i++) { int nx=x+dir[i][0]; int ny=y+dir[i][1]; if(check(nx,ny)) { vis[nx][ny]=1; dfs(nx,ny,step+1); vis[nx][ny]=0; } } } int main() { while(scanf("%d%d%d",&n,&m,&t)!=EOF) { flag=0; if(n==0&&m==0&&t==0)break; for(int i=0;i<n;i++) for(int j=0;j<m;j++) { scanf(" %c",&map1[i][j]); if(map1[i][j]==‘D‘) { ex=i; ey=j; } if(map1[i][j]==‘S‘) { sx=i; sy=j; } } if(((abs(ex-sx)+abs(ey-sy))%2)!=(t%2)) puts("NO"); else { vis[sx][sy]=1; dfs(sx,sy,0); vis[sx][sy]=0; if(flag==1) puts("YES"); else puts("NO"); } } return 0; }
HDU 1010 Tempter of the Bone(DFS剪枝)
标签:ase esper arc appear title lock ++ 相同 地方
原文地址:http://www.cnblogs.com/a249189046/p/7498746.html