1 条题解

  • 0
    @ 2024-12-24 10:06:01

    C :

    #include <stdlib.h>
    #include <stdio.h>
     
    char a[9][9];
    int n,m,t,dx,dy,f;
    int g[4][2]= {{1,0},{0,1},{-1,0},{0,-1}};
    void dfs(int x,int y,int p)
    {
        int i,sx,sy,s;
        s=p-abs(x-dx)-abs(y-dy);
        if(x>n||y>m||x<=0||y<=0) return;
        if(p==0&&s==0) f=1;
        if(f) return;
        if(s<0||s&1) return;
        for(i=0; i<4; i++)
        {
            sx=x+g[i][0];
            sy=y+g[i][1];
            if(a[sx][sy]!='X')
            {
                a[sx][sy]='X';
                dfs(sx,sy,p-1);
                a[sx][sy]='.';
            }
        }
        return;
    }
    int main()
    {
        int i,j,x,y,b;
        while(scanf("%d%d%d",&n,&m,&t)&&(n!=0||m!=0||t!=0))
        {
            getchar();
            b=0;
            for(i=1; i<=n; i++)
            {
                for(j=1; j<=m; j++)
                {
                    scanf("%c",&a[i][j]);
                    if(a[i][j]=='S')
                    {
                        x=i;
                        y=j;
                    }
                    else if(a[i][j]=='D')
                    {
                        dx=i;
                        dy=j;
                    }
                    else if(a[i][j]=='X') b++;
                }
                getchar();
            }
     
            if(n*m-b<=t)
            {
                printf("NO\n");
                continue;
            }
            f=0;
            a[x][y]='X';
            dfs(x,y,t);
            if(f) printf("YES\n");
            else printf("NO\n");
        }
        return 0;
    }
     
    /**************************************************************
        Problem: 1056
        User: admin
        Language: C
        Result: 正确
        Time:2 ms
        Memory:1064 kb
    ****************************************************************/
    
    • 1

    信息

    ID
    1799
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者