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

HDU1010DFS

时间:2017-04-21 00:36:04      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:size   剪枝   har   tin   get   stream   nbsp   memset   getchar   

#include<iostream>
#include<math.h>
using namespace std;
char s[10][10];
int ax,ay,bx,by,n,m,k;
int t[4][2]={1,0,-1,0,0,1,0,-1},vist[10][10],flag;
void dfs(int x,int y,int count)
{
    int i,mx,my;
    if(x==bx&&y==by)
    {
        if(k==count)
            flag=1;
        return;
    }
    if(count>=k)
        return;
    if(s[x][y]!=X)
    {
        for(i=0;i<4;i++)
        {
            mx=x+t[i][0];
            my=y+t[i][1];
            if(s[mx][my]!=X&&mx>=1&&mx<=n&&my>=1&&my<=m&&!vist[mx][my])
            {
                vist[mx][my]=1;
                dfs(mx,my,count+1);
                vist[mx][my]=0;
                if(flag)                       //注意,在找到了目标之后,就不需要再找!以往编写dfs时,没有注意这点
                    return;
            }
        }
    }
}
int main()
{
    while(~scanf("%d%d%d",&n,&m,&k)&&(n+m+k))
    {
        int i,count;
        for(i=1;i<=n;i++)
        {
            getchar();
            for(int j=1;j<=m;j++)
            {
                scanf("%c",&s[i][j]);
                if(s[i][j]==S)
                {
                    ax=i;
                    ay=j;
                }
                if(s[i][j]==D)
                {
                    bx=i;
                    by=j;
                }
            }
        }
        getchar();
        memset(vist,0,sizeof(vist));
        if(abs(ax-bx)+abs(ay-by)>k||(ax+bx+ay+by+k)%2==1)            //剪枝
        {
            printf("NO\n");
            continue;
        }
        vist[ax][ay]=1;
        flag=0;
        count=0;
        dfs(ax,ay,count);
        if(flag==1)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

 

HDU1010DFS

标签:size   剪枝   har   tin   get   stream   nbsp   memset   getchar   

原文地址:http://www.cnblogs.com/--lr/p/6741227.html

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