zoukankan      html  css  js  c++  java
  • HDU 1010 Tempter of the Bone (dfs)

    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<queue>
    using namespace std;
    int n,m,t;
    int sx,sy;
    int ex,ey;
    int ok;
    char mat[10][10];
    int vis[10][10];
    int op[4][2]={1,0, -1,0, 0,1, 0,-1};
    
    bool isok1(int x,int y,int step)
    {
        //printf("
    
    %d %d %d
    ",x,y,step);
        if(ok==1) return false;
        if(x<0||x>=n||y<0||y>=m)  return false;
        if(vis[x][y]==1||mat[x][y]=='X') return false;
        if(mat[x][y]=='D'&&step!=t) return false;
        int mlen= abs(x-ex)+abs(y-ey);
        int alen=t-step; //ans len
        if(alen<0||alen%2!=mlen%2) return false;
        return true;
    }
    void dfs(int x,int y,int step)
    {
       if(ok==1||step>t) return ;
       if(mat[x][y]=='D'&&step==t)
       {
           ok=1;
           return;
       }
       int i;
       for(i=0;i<4;i++)
       {
           int tx=x+op[i][0];
           int ty=y+op[i][1];
           int tstep=step+1;
           //printf("%d %d %d
    ",tx,ty,tstep);
           if(isok1(tx,ty,tstep))
           {
               vis[tx][ty]=1;
               dfs(tx,ty,tstep);
               vis[tx][ty]=0;
           }
       }
    }
    int main()
    {
        int i,j,k;
        while(scanf("%d%d%d",&n,&m,&t)!=EOF)
        {
            if(n==0&&m==0&&t==0) break;
            ok=0;
            memset(vis,0,sizeof(vis));
            for(i=0;i<n;i++)
            {
                scanf("%s",mat[i]);
                for(j=0;j<m;j++)
                {
                    if(mat[i][j]=='S')
                    {
                        sx=i;sy=j;
                    }
                    else if(mat[i][j]=='D')
                    {
                        ex=i;ey=j;
                    }
                }
            }
            if(isok1(sx,sy,0))
            {
                vis[sx][sy]=1;
                dfs(sx,sy,0);
            }
            if(ok==0)
            {
                printf("NO
    ");
            }
            else printf("YES
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    CSS美化自己的完美网页
    HTML基础做出属于自己的完美网页
    前端基础知识
    ajax应用篇
    mysql的介绍和安装
    MYSQL系列之(二)
    TP框架控制器的空操作
    Thinkphp框架基础
    PHP之Smarty模板引擎
    App 开发:Hybrid 架构下的 HTML5 应用加速方案
  • 原文地址:https://www.cnblogs.com/sola1994/p/4678966.html
Copyright © 2011-2022 走看看