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

    http://acm.hdu.edu.cn/showproblem.php?pid=1010

    奇偶剪枝,说好的里程碑来了。。。

    跳出dfs的时候一定要注意确保跳出。。。我开始写的时候没有跳出dfs只是跳出了一层递归,导致长时间tle,orz涂涂能看出这种问题。

    View Code
    #include <iostream>
    #include <queue>
    using namespace std ;
    int n,m,t ;
    int flag ;
    int e ;
    char map[10][10] ;
    void dfs(int x,int y,int time)
    {
        int tab[][2]={1,0,-1,0,0,1,0,-1} ;
        if(flag)
            return ;
        if(time==t && map[x][y]=='D')
        {
            flag=1 ;
            return ;
        }
        int temp=abs(x-y)&1 ;
        if(temp==e && (t-time)&1)
            return ;
        if(temp!=e && (t-time)&1==0)
            return ;
        map[x][y]='X' ;
        int xx,yy ;
        for(int i=0;i<4;i++)
        {
            xx=x+tab[i][0] ;
            yy=y+tab[i][1] ;
            if(xx<0 || xx>=n)continue ;
            if(yy<0 || yy>=m)continue ;
            if(map[xx][yy]=='X')continue ;
            if(map[xx][yy]=='D' && time+1!=t)continue ;
            dfs(xx,yy,time+1) ;
            map[xx][yy]='.' ;
        }
    }
    int main()
    {
        while(scanf("%d%d%d",&n,&m,&t),(n||m||t))
        {
            for(int i=0;i<n;i++)
                scanf("%s",map[i]) ;
            int xx,yy ;
            int cnt=0 ;
            for(int i=0;i<n;i++)
                for(int j=0;j<m;j++)
                {
                    if(map[i][j]=='S')
                        xx=i,yy=j ;
                    if(map[i][j]=='D')
                        e=abs(i-j)&1 ;
                    if(map[i][j]=='X')
                        cnt++ ;
                }
            if(n*m-cnt<t)
            {
                puts("NO") ;
                continue ;
            }
            flag=0 ;
            dfs(xx,yy,0) ; 
            if(flag)
                puts("YES") ;
            else 
                puts("NO") ;
        }
        return 0 ;
    } 
  • 相关阅读:
    把一列数据分割成两列
    数据校验,轴的概念
    叠加折线图
    饼图
    柱状图、水平柱状图
    柱状图
    数据筛选过滤
    余数
    输出进度条
    生成器-文件内容
  • 原文地址:https://www.cnblogs.com/xiaohongmao/p/2536998.html
Copyright © 2011-2022 走看看