zoj 2110 DFS

简介: // zoj 2110 #include<stdio.h>#include<math.h>char map[9][9];int m,n,t;int di,dj;bool escape;int dir[4][2]={{0,-1},{0,1},{1,0},{-1,0}};void dfs(int si,int sj,int cnt){ int
// zoj 2110  
#include<stdio.h>
#include<math.h>
char map[9][9];
int m,n,t;
int di,dj;
bool escape;
int dir[4][2]={{0,-1},{0,1},{1,0},{-1,0}};
void dfs(int si,int sj,int cnt)
{
    int i,temp;
    if(si>n||sj>m||si<=0||sj<=0)
        return ;
    if(si==di&&sj==dj&&cnt==t)
    {
        escape=1;
        return ;
    }
    temp=t-cnt-fabs(si-di)-fabs(sj-dj);
    if(temp<0 || temp%2) return ;
    for(i=0;i<4;i++)
    {
        if(map[si+dir[i][0]][sj+dir[i][1]]!='X')
        {
            map[si+dir[i][0]][sj+dir[i][1]]='X';
            dfs(si+dir[i][0],sj+dir[i][1],cnt+1);
            if(escape)  return ;
            map[si+dir[i][0]][sj+dir[i][1]]='.';
        }
    }
    return ;
}
int main()
{
    int i,j,si,sj;
   // freopen("input.txt","r",stdin);
    while(scanf("%d%d%d",&n,&m,&t))
    {
        if(n==0 && m==0 && t==0)  break;
        int wall=0;
        char temp;
        scanf("%c",&temp);
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=m;j++)
            {
                scanf("%c",&map[i][j]);
                if(map[i][j]=='S')
                {
                    si=i;
                    sj=j;
                }
                else if(map[i][j]=='D')
                {
                    di=i;
                    dj=j;
                }
                else if(map[i][j]=='X')
                    wall++;
            }
            scanf("%c",&temp);
        }
        if(n*m-wall<=t)
        {
            printf("NO\n");
            continue;
        }
        escape=0;
        map[si][sj]='X';
        dfs(si,sj,0);
        if(escape) printf("YES\n");
        else printf("NO\n");
    }
   return 0;
}


目录
相关文章
|
算法
1091 zoj Knight Moves的BFS算法和DFS
1091 zoj Knight Moves的BFS算法和DFS
70 0
CF708C-Andryusha and Colored Balloons(dfs)
CF708C-Andryusha and Colored Balloons(dfs)
105 0
HDOJ 1081(ZOJ 1074) To The Max(动态规划)
HDOJ 1081(ZOJ 1074) To The Max(动态规划)
86 0
HDOJ 1081(ZOJ 1074) To The Max(动态规划)
|
机器学习/深度学习
|
BI 人工智能
|
人工智能 机器学习/深度学习
POJ 1775 (ZOJ 2358) Sum of Factorials
Description John von Neumann, b. Dec. 28, 1903, d. Feb. 8, 1957, was a Hungarian-American mathematician who made important contributions t...
1156 0
zoj 1586 prim
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=586 #include &lt;cstdio&gt; #include &lt;cstring&gt; #define MAX 1000000 int Edge[1010][1010]; int adapter[1010]; int lowcost[1010]
982 0

热门文章

最新文章