1 solutions

  • 0
    @ 2024-12-10 23:49:12

    C++ :

    #include<cstdio>
    #include<cstring>
    using namespace std;
    
    const int dx[4]={ 0, -1, 0, 1 };
    const int dy[4]={-1,  0, 1, 0 };
    
    
    struct node
    {
        int x,y;
    };
    
    node list[1100];
    
    int a[20][20],n,m,stx,sty,edx,edy;
    bool bk;
    void dfs(int x,int y,int k)
    {
        int i,xx,yy;
        if( x==edx && y==edy)
        {
            int dep=k-1;
            for(i=1;i<=dep-1;i++)
                printf("(%d,%d)->",list[i].x, list[i].y);
            printf("(%d,%d)\n", list[dep].x, list[dep].y);
            bk=true;
        }
        else
        {
            for(i=0;i<=3;i++)
            {
                xx= x+ dx[i]; yy= y+dy[i];
                if( xx>=1 && xx<=n && yy>=1 && yy<=m)
                    if( a[xx][yy]==1)
                    {
                        a[xx][yy]=0;
                        list[k].x=xx; list[k].y=yy;
                        
                        dfs( xx,yy, k+1);
                        
                        
                        a[xx][yy]=1;
                    }
            }
    
        }
        
    }
    
    
    int main()
    {
        int i,j;
        scanf("%d%d",&n,&m);
        for(i=1;i<=n;i++)
           for(j=1;j<=m;j++)
               scanf("%d",&a[i][j]);
        scanf("%d%d",&stx,&sty);
        scanf("%d%d",&edx,&edy);
        list[1].x= stx; list[1].y= sty;
        bk=false;
        if( a[stx][sty]==1 &&  a[edx][edy]==1)
        {
            a[stx][sty]=0;
            dfs( stx , sty , 2);
        }
        
        if( bk==false) printf("-1\n");
        return 0;
    }
    
    
    • 1

    Information

    ID
    625
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    10
    Tags
    # Submissions
    3
    Accepted
    0
    Uploaded By