题解 | #迷宫问题#

迷宫问题

https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc

#include<stdio.h>
#include<string.h>
//从后往前找路
int map[10][10];
int n,m;
int tx[100];
int ty[100];
int k=0;

int fun(int x,int y)
{
    if(x==n-1&&y==m-1)
    {
        map[x][y]=2;
        tx[k]=x;
        ty[k]=y;
        k++;
        //printf("(%d,%d)\n",tx[k-1],ty[k-1]);
        return 1;
    }
    if(x>=n||x<0||y>=m||y<0)
    return 0;
    if(map[x][y]!=0)
    return 0;
    map[x][y]=2;
    if(fun(x+1,y))
    {
        tx[k]=x;
        ty[k]=y;
        k++;
        //printf("(%d,%d)\n",tx[k-1],ty[k-1]);
        return 1;
    }
    if(fun(x-1,y))
    {
        tx[k]=x;
        ty[k]=y;
        k++;
        //printf("(%d,%d)\n",tx[k-1],ty[k-1]);
        return 1;
    }
    if(fun(x,y+1))
    {
        tx[k]=x;
        ty[k]=y;
        k++;
        //printf("(%d,%d)\n",tx[k-1],ty[k-1]);
        return 1;
    }
    if(fun(x,y-1))
    {
        tx[k]=x;
        ty[k]=y;
        k++;
        //printf("(%d,%d)\n",tx[k-1],ty[k-1]);
        return 1;
    }
    return 0;
}

int main()
{
    scanf("%d %d",&n,&m);
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            scanf("%d",&map[i][j]);
        }
    }
    fun(0,0);
    //printf("%d",k);
    for(int i=k-1;i>=0;i--)
    printf("(%d,%d)\n",tx[i],ty[i]);
    return 0;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务