第4章第3节-层层递进-广度优先搜索

2023-05-16

/*层层递进-广度优先搜索*/

#include "stdio.h"
struct note
{
    int x;//横坐标
    int y;//纵坐标
    int f;//父亲在队列中的编号,本题不要求输出路径,可以不需要f
    int s;//步数
}; 

int main()
{
    struct note que[2501];//因为地图大小不超过50*50,因此队列扩展不会超过2500个

    int a[51][51] = {0},book[51][51] = {0};
    //定义一个用于表示走的方向的数组
    int next[4][2] = {{0,1},{1,0},{0,-1},{-1,0}};//分别表示向右,向下,向左,向上
    int head,tail;
    int i,j,k,n,m,startx,starty,p,q,tx,ty,flag;

    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 %d %d",&startx,&starty,&p,&q);

    //队列初始化
    head = 1;
    tail = 1;
    //往队列插入迷宫坐标
    que[tail].x = startx;
    que[tail].y = starty;
    que[tail].f = 0;
    que[tail].s = 0;
    tail++;
    book[startx][starty] = 1;

    flag = 0;//用来标记是否到达目标点,0表示暂时没有到达,1表示到达
    //当队列不为空时循环
    while(head < tail)
    {
        //枚举4个方向
        for(k = 0;k <= 3;k++)
        {
            //计算下一个点的坐标
            tx = que[head].x + next[k][0];
            ty = que[head].y + next[k][1];
            //判断是否越界
            if(tx < 1 || tx > n || ty < 1 || ty > m)
            {
                continue;//跳出此次循环
            }
            //判断是否是障碍物或者已经在路径中
            if(a[tx][ty] == 0 && book[tx][ty] == 0)
            {
                //把这个点标记为已经走过
                //注意宽搜每个点只入队列一次,所以和深搜不同,不用将book数组还原
                book[tx][ty] = 1;
                //插入新的点到队列之中
                que[tail].x = tx;
                que[tail].y = ty;
                que[tail].f = head;//因为这个点是从head扩展出来的,所以他的父亲就是head,本题目不需要求路径,因此本句可省略
                que[tail].s = que[head].s + 1;//步数是父亲的步数加1
                tail++;
            }
            //如果到目标点了,停止扩展,任务结束,退出循环
            if(tx == p && ty == q)
            {
                //注意下面两句话千万不要写颠倒了
                flag = 1;
                break;
            }
        }
        if(flag == 1)
        {
            break;
        }
        head++;//全部出列,注意这地方千万不要忘记,当一个点扩展结束后,head++才能对后面的点再进行扩展
    }
    //打印队列中末尾最后一个点(目标点)的步数
    //注意tail指向的是队列队尾(即最后一为)的下一个位置,所以这里需要-1
    printf("%d\n",que[tail - 1].s );
    getchar();getchar();
    return 0;
}
/*********
示例输入:
5 4
0 0 1 0
0 0 0 0 
0 0 1 0
0 1 0 0 
0 0 0 1
1 1 4 3
示例输出:
7
************/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第4章第3节-层层递进-广度优先搜索 的相关文章

  • 清华软件论坛 | 推动移动传感的极限:AIoT时代的智能健康和数字家庭

    清华软件论坛 xff0c 是在清华大学软件学院成立20周年之际创立的 xff0c 旨在探索软件科学基础理论 创新软件前沿技术 思辩软件工程方法 促进学科交叉融合 xff0c 持续提升清华软件发展水平 xff0c 清华大学软件学院打造 清华软
  • 国家级表彰 | 小米人工智能实验室声学语音团队荣获“全国工人先锋号”荣誉称号...

    小米人工智能实验室声学语音团队代表王育军接受央视采访 4月27日 xff0c 小米集团技术委员会人工智能实验室声学语音团队荣获由中华全国总工会颁发的 全国工人先锋号 荣誉称号 颁奖典礼在人民大会堂举行 xff0c 小米声学语音技术总监王育军
  • Tech Talk | 还原照片不同亮度范围细节——RAW HDR技术

    拍照时 xff0c 你是否遇到过这些情况呢 xff1f 拍摄的成片暗区过暗 xff0c 高亮区域过曝 逆光拍摄中 xff0c 会出现 鬼影 暗部噪声偏大导致图像出现瑕疵 照片的高光和暗区细节得总是不到完美呈现 xff0c 这是所有拍摄设备都
  • 技术人文 | 你的加入,会为更多人争取避险时间

    如图文未加载 xff0c 请刷新后重试 今天是第15个全国防灾减灾日 xff0c 不仅要提高意识预防于未然 xff0c 其实你也可以贡献一份力量 2019年 xff0c 小米与成都高新减灾所共同探索 合作研发 xff0c 发布了全球首个操作
  • 一篇文章搞懂HDFS管理权限

    小米的HDFS承载了公司内多个部门几十条业务线的几十PB数据 xff0c 这些数据有些是安全级别非常高的用户隐私数据 xff0c 也有被广泛被多个业务线使用的基础数据 xff0c 不同的业务之间有着复杂的数据依赖 因此 xff0c 如何管理
  • 2018年度小米运维盘点

    元旦假期一眨眼就没了 xff0c 2018年也嗖的一下就过去了 xff0c 这一年里发生的大事件你都还记得吗 xff1f 下面就让小编带你回顾一下过去这一年里小米运维的知识点吧 xff01 2018年我们推送了很多被读者认可的文章 xff0
  • 网络工程师眼中的自动化运维

    本文从一名网工从业者的角度出发 xff0c 探讨了在企业网运维过程中 xff0c 网络工程师可以用什么样的工具让网络更加透明高效 上篇文章回顾 xff1a Apache Ranger Hadoop ACL控制工具 引言 网络就像wifi x
  • 浅谈动态追踪技术

    本文主要介绍了动态追踪技术 xff0c 并举例说明动态追踪技术的应用 身为一个SRE xff0c 工作中经常会遇到各种奇奇怪怪的服务异常问题 这些问题在staging xff08 测试环境 xff09 没有发现 xff0c 但放到真实的生产
  • 深入浅出计算机视觉(一)

    本文通过案例引入计算机视觉基本知识 xff0c 并浅析其基本任务中的图像分类 图像分割进展及应用 历史文章回顾 xff1a HBase Replication详解 Foreword前言 先上几个计算机视觉应用的案例 xff1a 6月6日至8
  • orbslam2 安装与运行

    目录 一 更新apt库 xff0c 更新软件列表 二 安装git xff0c 用于从Github上克隆项目到本地 三 下载orbslam2源码 四 安装C 43 43 11编译器 cmake 五 安装Pangolin 六 安装Eigen3
  • strstr函数的用法

    包含文件 xff1a string h 函数名 strstr 函数原型 xff1a extern char strstr char str1 char str2 功能 xff1a 从字符串str1中查找是否有字符串str2 xff0c 如果
  • 冒泡排序、插入排序,选择排序区别

    在代码的写法上表现为 xff1a 冒泡排序 xff1a 在某一个元素的冒泡过程中 xff0c 当前元素与其他元素比较后可能需要进行互换操作 xff0c 而这个操作可能执行多次 选择排序 xff1a 当前元素只交换一次 xff08 或0次 x
  • Prometheus 环境搭建

    1 ubuntu和ros安装 lt 安装ubuntu对应的ros版本 gt 2 prometheus px4配置 prometheus px4是Prometheus项目配套使用的PX4固件 xff0c Prometheus项目的仿真模块依赖
  • E: 无法定位软件包 的解决办法

    one solution 1 sudo apt get update 更新目录 2 sudo apt get upgrade xff08 更新文件 xff09 3 sudo apt get dist upgrade xff08 更新依赖关系
  • gnome-terminal用法解析

    gnome terminal命令用于打开一个新的终端 xff0c 直接在命令行 gnome terminal 就可以打开一个新的终端 xff0c 有一些常用参数 xff1a 打开后自动最大化 gnome terminal maximize打
  • 仿真1 - takeoff_land

    实验步骤 xff1a xff08 1 xff09 将遥控器开机并通过USB接口接入电脑 xff08 2 xff09 输入以下命令启动起飞降落仿真demo cd xff5e Prometheus Scripts simulation tuto
  • orbslam2稠密版建图

    一 获取代码 高博的工作是对基本 ORB SLAM2 的扩展 xff0c 基本思想是为每个关键帧构造相应的点云 xff0c 然后依据从 ORB SLAM2 中获取的关键帧位置信息将所有的点云拼接起来 xff0c 形成一个全局点云地图 git
  • 六级(2020/7-1) Text1

    People often discuss the dangers of too much stress xff0c but lately最近 a very different view of stress is gaining popula
  • Prometheus在无人机板载计算机的搭建

    一 source ubuntu sh 过程遇到的问题 问题一 xff1a Could not find a version that satisfies the requirement psutil 解决办法 xff1a 1 找到requi
  • 《论文阅读01》Learning multiview 3D point cloud registration

    目录 一 论文 二 论文概要 三 论文详述 一 论文 研究领域 xff1a 点云配准论文 xff1a Learning multiview 3D point cloud registrationCVPR 2020论文链接 二 论文概要 该论

随机推荐

  • 跨源点云配准

    跨源点云配准是指对不同类型传感器的点云进行配准 它的优点是结合多个不同类型的传感器各自的优势 xff0c 为自动驾驶系统提供更丰富的三维点云信息 相比于同源点云配准 xff0c 跨源点云配准尚处于学术阶段 xff0c 而其在自动驾驶领域的应
  • Ubuntu20.04 安装pcl点云库

    Ubuntu18 04和20 04安装pcl点云库非常方便 xff0c 只需要一行代码 xff1a sudo apt install libpcl dev 卸载 xff1a sudo apt remove libpcl dev
  • vslam从入门到入土:在ubuntu18中使用D455运行VINS-FUSION

    1 ROS安装 建议使用ROS官方网的步骤 melodic Installation Ubuntu ROS Wiki 一定要看清楚版本 ubuntu18 是 melodic 2 ceres安装 2 1依赖 sudo apt get inst
  • 01 点云中的NAN点

    一 NAN点 在点云中 xff0c NAN Not a Number 表示一个无效的数字或值 xff0c 通常是由于数据输入错误 计算错误或其他问题导致的 NAN点可能表示一个不存在的点 一个超出点云范围的点 一个无效的坐标值等 由于NAN
  • Ardupilot自定义mavlink消息

    在ardupilot modules mavlink message definitions v1 0 commom xml文件结尾处添加自定义消息 lt 20220713WP 添加一个mavlink消息 gt lt message id
  • 08年donews创始人刘韧敲诈奇虎入狱一事有感

    回想到08年发生的这件事情 xff0c 行业有潜规则 xff0c 也有红线 xff0c 有人会设局 xff0c 但无论如何红线不能踩 xff0c 否则迟早出问题 xff0c 事情的黑白与否已经没有讨论的价值 xff0c 关键问题是各个行业的
  • 文档利器reStructuredText

    关于为啥要用reStructuredText xff0c 这个不用多说 xff0c 方便 xff0c 简洁 单从Python和Django的官网文档就是用reStructuredText来编写的 xff0c 就可以看出这是一把利器 reSt
  • 编译pixhawk遇到的问题,纠结好久才明白

    我使用官网上的方法下载 编译 烧写 xff0c 但是飞行的时候总出问题 xff0c 表示很无解 xff0c 最后才发现自己一直跟踪的是master版本 xff0c 根据官网介绍 xff0c master is by default unst
  • React中的反向代理(React脚手架),解决跨域访问问题。

    请怀着一颗感恩的心 xff0c my good time 一 当前 脚手架项目下安装 npm i http proxy middleware save dev 二 创建 文件 src setupProxy js 解释 xff1a 在src文
  • React中使用 axios配置 全局请求基础路径;(React脚手架);axios配置baseURL;

    请怀着一颗感恩的心 xff0c My Good Time 一 模块化开发 xff0c 安装 axios npm i axios save 二 在App js文件 xff08 或者src index js xff09 中 编写一下代码即可代码
  • ubuntu修改启动项等待时间、修改启动项顺序、更改启动内核

    目录 ubuntu修改启动项等待时间 修改启动项顺序 更改系统内核版本 ubuntu修改启动项等待时间 步骤 sudo vi etc default grub找GRUB TIMEOUT 61 10 那一行 xff0c 把10改为需要的时间即
  • 西门子博途软件安装及使用

    一 博途软件的简介 博途软件可以对西门子300 400 1200及1500产品进行组态 编程和调试 TIA博途软件是一个系统 xff0c 里面包含有多种软件 xff0c 可以满足用户在不同自动化控制系统中的各种需求 因此 xff0c 博途软
  • 数据库查询字段空值null的处理

    以下都将为空的int型字段处理成0值 处理后的值需要和对应字段的类型一致 mysql数据库 xff1a select ifnull 字段名 0 from 表名 sqlserver数据库 xff1a select isnull 字段名 0 f
  • 微信小程序填坑之invalid code

    微信小程序获取到code然后向后端请求openId xff0c 一直报错 invalid code hints req id xTlc2a02352064 很是郁闷 后来新建了一个项目输入正式的AppId xff0c 才得以成功 原因是 x
  • Hive启动 beeline 客户端失败问题解决

    Hive启动 beeline 客户端失败问题解决 一 连接拒绝 错误展示 realeo 64 hadoop102 hive bin beeline u jdbc hive2 hadoop102 10000 n realeo Connecti
  • 分布式八股文

    分布式八股文 分布式服务接口的幂等性如何设计 所谓幂等性 xff0c 就是说一个接口 xff0c 多次发起同一个请求 xff0c 你这个接口得保证结果是准确得 比如不能多扣款 不能多插入一条数据 xff0c 不能将统计值多加了 1 xff0
  • Mysql慢查询优化实战

    Mysql慢查询优化实战 效果 xff1a 效率提升十倍左右 优化前 mysql span class token operator gt span span class token keyword use span brd old spa
  • 自连接(a join a)的妙用

    自连接 xff08 a join a xff09 的妙用 牛客题目 span class token keyword select span s span class token punctuation span emp no span c
  • 蓝桥杯大赛单片机比赛的心得总结

    翻了下以前做过的一些项目和比赛 xff0c 发现了之前准备比赛的一些注意事项和心得 xff0c 分享给大家希望大家能够避免错误拿高分 适当的延时很重要 xff0c 可以解决一些不正常现象 ds1302读取的时间是BCD码 操作时间时换成10
  • 第4章第3节-层层递进-广度优先搜索

    层层递进 广度优先搜索 include 34 stdio h 34 struct note int x 横坐标 int y 纵坐标 int f 父亲在队列中的编号 xff0c 本题不要求输出路径 xff0c 可以不需要f int s 步数