zoukankan      html  css  js  c++  java
  • Tempter of the Bone HDU

    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 }
  • 相关阅读:
    算法笔记--贪心
    算法笔记--递归
    算法笔记--哈希
    算法笔记--散列
    算法笔记--排序算法
    算法笔记--简单编程训练
    算法笔记--简单模拟
    算法笔记--注意事项
    3.4 空间滤波
    【解题报告】【概率DP入门】 P1850 换教室
  • 原文地址:https://www.cnblogs.com/hehe54321/p/hdu-1010.html
Copyright © 2011-2022 走看看