HDU 1010

经典搜索

 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 
 5 const int MAX=10;
 6 
 7 int step[MAX][MAX];
 8 char maze[MAX][MAX];
 9 int n,m,t;
10 struct {
11     int i,j;
12 }beg,des;
13 int dir[4][2]={0,1,1,0,0,-1,-1,0};
14 
15 bool ok(int i,int j){
16     if(i<1||i>n||j<1||j>m||maze[i][j]=='X')
17     return false;
18     return true;
19 }
20 
21 bool dfs(int i,int j,int time){
22     if(time==0&&i==des.i&&j==des.j) return true;
23     else if(time==0) return false;
24     
25     int ti,tj;
26     for(int k=0;k<4;k++){
27         ti=i+dir[k][0];
28         tj=j+dir[k][1];
29         if(ok(ti,tj)){
30             if(time-1<abs(des.i-ti)+abs(des.j-tj)) continue;
31             maze[i][j]='X';
32             if(dfs(ti,tj,time-1)) return true;
33             maze[i][j]='.';
34         }
35     }
36     
37     return false;
38 }
39 
40 int main(){
41     for(int i=1;i<=7;i++)
42     step[0][i]=i%2;
43     for(int i=1;i<=7;i++){
44         for(int j=1;j<=7;j++)
45         step[i][j]=step[i-1][j]^1;
46     }
47     while(scanf("%d%d%d",&n,&m,&t)!=EOF){
48         if(n==0&&m==0&&t==0) break;
49         int cnt=0;
50         for(int i=1;i<=n;i++){
51             scanf("%s",maze[i]+1);
52             for(int k=1;k<=m;k++){
53                 if(maze[i][k]=='.') cnt++;
54                 if(maze[i][k]=='S'){
55                     beg.i=i; beg.j=k;
56                 }
57                 if(maze[i][k]=='D'){
58                     des.i=i; des.j=k; 
59                 }
60             }
61         }
62         cnt++;
63         if(cnt<t){
64             printf("NO\n"); continue;
65         }
66         if(step[beg.i][beg.j]==step[des.i][des.j]&&t%2==1){
67             printf("NO\n"); continue;
68         }
69         if(step[beg.i][beg.j]!=step[des.i][des.j]&&t%2==0){
70             printf("NO\n"); continue;
71         }
72     //    cout<<"here"<<endl;
73         if(dfs(beg.i,beg.j,t))
74         printf("YES\n");
75         else printf("NO\n");
76     }
77     return 0;
78 }
View Code

 

posted @ 2014-06-18 21:54  chenjunjie1994  阅读(122)  评论(0编辑  收藏  举报