码迷,mamicode.com
首页 > 其他好文 > 详细

Tempter of the Bone HDU - 1010

时间:2017-11-08 19:46:53      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:note   void   不同   .net   col   one   put   完成   logs   

Tempter of the Bone HDU - 1010

dfs。

几个剪枝:

1.如果当前所用时间加上当前位置到目标的曼哈顿距离之和大于目标时间,那么显然无论如何不能完成。剪掉

2.在搜索前判一下,如果出发位置到目标的曼哈顿距离与目标时间的奇偶性不同,那么显然无论如何不能完成。剪掉

错误原因:未加第二个剪枝,TLE

 1 #include<cstdio>
 2 char s[10][10];
 3 bool ok;
 4 int n,m,t,tx,ty,sx,sy;
 5 int abs(int x)
 6 {
 7     return x>0?x:-x;
 8 }
 9 void dfs(int x,int y,int num)
10 {
11     if(num>t)    return;
12     if(abs(tx-x)+abs(ty-y)+num>t)    return;
13     if(x==tx&&y==ty)
14     {
15         if(num==t)
16         {
17             puts("YES");
18             ok=1;
19         }
20         return;
21     }
22     s[x][y]=X;
23     if(x>1&&s[x-1][y]==.)    dfs(x-1,y,num+1);
24     if(ok)    return;
25     if(x<n&&s[x+1][y]==.)    dfs(x+1,y,num+1);
26     if(ok)    return;
27     if(y>1&&s[x][y-1]==.)    dfs(x,y-1,num+1);
28     if(ok)    return;
29     if(y<m&&s[x][y+1]==.)    dfs(x,y+1,num+1);
30     if(ok)    return;
31     s[x][y]=.;
32 }
33 int main()
34 {
35     int i,j;
36     scanf("%d%d%d",&n,&m,&t);
37     while(n!=0&&m!=0&&t!=0)
38     {
39         ok=false;
40         for(i=1;i<=n;i++)
41             scanf("%s",s[i]+1);
42         for(i=1;i<=n;i++)
43             for(j=1;j<=m;j++)
44             {
45                 if(s[i][j]==S)
46                 {
47                     sx=i;sy=j;
48                     s[i][j]=.;
49                 }
50                 else if(s[i][j]==D)
51                 {
52                     tx=i;ty=j;
53                     s[i][j]=.;
54                 }
55             }
56         if((abs(tx-sx)+abs(ty-sy)-t)%2==0)
57             dfs(sx,sy,0);
58         if(!ok)
59             puts("NO");
60         scanf("%d%d%d",&n,&m,&t);
61     }
62     return 0;
63 }

Tempter of the Bone HDU - 1010

标签:note   void   不同   .net   col   one   put   完成   logs   

原文地址:http://www.cnblogs.com/hehe54321/p/hdu-1010.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!