HDU 1010 Tempter of the Bone(DFS)

来源:互联网 发布:上海大型网络工程公司 编辑:程序博客网 时间:2024/04/29 22:41

题意:判断,能否从S到D,恰好在T时间到。

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int maxm=10;int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};char map[maxm][maxm];int vis[maxm][maxm];int x1,y1;int m,n,T;int ok;void dfs(int x,int y,int step){    if(ok||step>T)    {        return;    }    else if(map[x][y]=='D'&&step==T)    {        ok=1;        return;    }    for(int i=0;i<4;i++)    {        int sx=x+dir[i][0];        int sy=y+dir[i][1];        if(sx>=0&&sx<m&&sy>=0&&sy<n&&!vis[sx][sy]&&map[sx][sy]!='X')        {            vis[sx][sy]=1;            dfs(sx,sy,step+1);            vis[sx][sy]=0;        }    }}int main(){    while(scanf("%d%d%d",&m,&n,&T)!=EOF&&(m+n+T))    {        memset(vis,0,sizeof(vis));        for(int i=0;i<m;i++)        {            scanf("%s",map[i]);            for(int j=0;j<n;j++)            {                if(map[i][j]=='S')                {                    x1=i;                    y1=j;                }            }        }        ok=0;        vis[x1][y1]=1;        dfs(x1,y1,0);        if(ok)        {            printf("YES\n");        }        else        {            printf("NO\n");        }    }    return 0;}


0 0
原创粉丝点击