• 走迷宫(回溯、深搜)判断能否到终点


    时限:1000ms 内存限制:10000K  总时限:3000ms 描述:

    判断是否能从迷宫的入口到达出口

    输入: 先输入两个整数表示迷宫的行数m和列数n,再输入口和出口的坐标,最后分m行输入迷宫,其中1表示墙,0表示空格每个数字之间都有空格。

    输出: 若能到达,则输出"Yes",否则输出"No",结果占一行。

    输入样例:

    3 3
    0 0
    2 2
    0 0 0
    1 1 0
    0 1 0

    输出样例:

    Yes

    输入样例:

    12 12
    1 8
    10 7
    1 1 1 1 1 1 1 1 1 1 1 1
    1 0 0 0 0 0 0 1 0 1 1 1
    1 0 1 0 1 1 0 0 0 0 0 1
    1 0 1 0 1 1 0 1 1 1 0 1
    1 0 1 0 0 0 0 0 1 0 0 1
    1 0 1 1 1 1 1 1 1 1 1 1
    1 0 0 0 1 0 1 0 0 0 0 1
    1 0 1 1 1 0 0 0 1 1 1 1
    1 0 0 0 0 0 1 0 0 0 0 1
    1 1 1 0 1 1 1 1 0 1 0 1
    1 1 1 1 1 1 1 0 0 1 1 1
    1 1 1 1 1 1 1 1 1 1 1 1

    输出样例:

    Yes

    #include<stdio.h>
    int Arr[30][30];//最大迷宫为30*30
    int Rownum=0,Colnum=0;//行列数
    int Beginrow,Begincol,Endrow,Endcol;//终点坐标
    int state=0;//迷宫走通与否状态
    int canplace(int row,int col)//判断当前点能否走通
    {
        if(row>=0 &&col>=0 &&row<Rownum &&col<Colnum &&Arr[row][col]==0)//为越界且可走通
            return 1;
        return 0;
    }
    void search(int row,int col)
    {
        if(row==Endrow && col==Endcol)//是目标终点    
        {    state=1;  return ;   }
        
        int r,c;
        Arr[row][col]=1;//对可走通的点进行标记
        r=row-1; c=col; //
        if(canplace(r,c))  search(r,c); 
        r=row; c=col+1;//
        if(canplace(r,c))  search(r,c); 
        r=row+1;  c=col;//
        if(canplace(r,c))  search(r,c); 
        r=row;    c=col-1;//
        if(canplace(r,c))  search(r,c); 
    }
    int main()
    { 
        int i,j;
        scanf("%d%d",&Rownum,&Colnum);//输入迷宫行列数  
        scanf("%d%d%d%d",&Beginrow,&Begincol,&Endrow,&Endcol);//起始点,终点坐标
        for(i=0;i<Rownum;i++)
            for(j=0;j<Colnum;j++)
               scanf("%d",&Arr[i][j]);       //一行一行的输入迷宫布局
        
        Arr[Beginrow][Begincol]=1;
        search(Beginrow,Begincol);
        //一个迷宫搜索路径后的最终状态,起始点接通与否
        if(state==1)
            printf("Yes\n");
        else
            printf("No\n");    
        return 0;
    }
  • 相关阅读:
    【教程】利用OBS+腾讯会议进行线上考试
    【Python】Pygame入门
    【站长】视频解析接口大全 – 站长必备
    【Python】GUI编程(Tkinter)教程
    2017年Unity开发环境与插件配置安装(总体介绍)
    如何开发AR增强现实应用与产品
    红透半边天的VR(虚拟现实)产业
    VR就是下一个浪潮_2016 (GMGC) 全球移动游戏大会观后感
    《Unity3D/2D游戏开发从0到1》正式出版发行
    AR增强现实开发介绍(续)
  • 原文地址:https://www.cnblogs.com/IThaitian/p/2585257.html
Copyright © 2020-2023  润新知