目录

  • 一、题目
  • 二、分析
  • 三、代码
  • 四、总结

一、题目

著名设计师小蓝给蓝桥小学设计了一个教学楼。  
蓝桥小学经常下雨,所以校长希望教学楼任何地方都可以连通到其它地方。  
小蓝给出了教学楼的平面图,用一个 nn 行 mm 列的 0101 矩阵表示,其中 00 表示空地,11 表示教学 楼。两个相邻的 11 (上下相邻或左右相邻)之间互相可达。  
请帮小蓝检查一下,是否教学楼的任意两个地方都可以连通到其它地方。

输入描述
输入的第一行包含两个整数 n, mn,m,用一个空格分隔。

接下来 nn 行,每行一个长度为 mm 的 0101 串,表示教学楼的平面图。

输出描述
如果满足要求,输出“YES”,否则输出“NO”,请注意字母全部都是大写。

输入输出样例
输入

5 6
111111
110011
011000
001111
111000

输出

YES

二、分析

这是一个平面图判连通问题,思路是从第一个1出发,dfs,看是否能走遍所有1。

三、代码

#include <iostream>
using namespace std;int n, m,num = 0,cnt = 0;
char map[500][500] = { 0 };    //存放地图信息
int vis[500][500] = { 0 }; //标志位//方向向量: 下上右左
int dx[4] = {0,0,1,-1};
int dy[4] = {1,-1,0,0};        //x,y表示当前坐标
void dfs(int x,int y)
{cnt++;vis[x][y] = 1;for (int i = 0; i < 4; i++){int nx = x + dx[i];     int ny = y + dy[i];if (nx >= 0 && ny >= 0 && nx < n && ny < m && map[nx][ny] == '1' && vis[nx][ny] == 0)dfs(nx, ny);}
}//平面图判连通,思路是dfs,从第一个'1'出发,看是否能走遍所有1
int main( )
{cin >> n >> m;     //n行m列for (int i = 0;i < n;i++){for (int j = 0; j < m; j++){cin >> map[i][j];if (map[i][j] == '1')num++;}}//输入完成for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){if (map[i][j] == '1')   //找到第一个1{dfs(i, j);if (cnt == num)cout << "YES";elsecout << "NO";return 0;}}}
}

四、总结

1、这段代码可以作为dfs的模板,dfs函数内,先标记数组,对于每个方向,如果满足在图内,且可走并未被访问过,即
nx >= 0 && ny >= 0 && nx < n && ny < m && map[nx][ny] == '1' && vis[nx][ny] == 0
那么dfs。
应该结合递归先序遍历 在草稿纸上走一遍。

2、在走方向时,

for (int i = 0; i < 4; i++){int nx = x + dx[i];      int ny = y + dy[i];if (nx >= 0 && ny >= 0 && nx < n && ny < m && map[nx][ny] == '1' && vis[nx][ny] == 0)dfs(nx, ny);}

不能写成,

x += dx[i];
y += dy[i];

不能直接改变x、y的值,因为for循环中的下一个方向可能要用到。

平面图判连通 蓝桥杯模拟赛题相关推荐

  1. 第十三届蓝桥杯模拟赛(第三期)试题与题解 C++

    文章目录 第十三届蓝桥杯模拟赛(第三期)试题与题解 1.试题A 题解:数制转换 2.试题B 题解:枚举 3.试题C 题解:枚举 4.试题D 题解:最小生成树 5.试题E 方法一:暴力求和 方法二:一维 ...

  2. 2020年蓝桥杯模拟赛2020.3.25直播笔记

    2020年蓝桥杯模拟赛解题报告(CPP版本) 第八题 长草的bfs写法[我想暴力模拟O kmn] 深搜会爆 bfs像投到水里的涟漪 问题: const int dx[] = {1, 0, -1, 0} ...

  3. 第十三届蓝桥杯模拟赛第二期JAVA组个人题解

    第十三届蓝桥杯模拟赛第二期JAVA组个人题解 文章目录 第十三届蓝桥杯模拟赛第二期JAVA组个人题解 题目1 题目2 题目3 题目4 题目5 题目6 题目7 题目8 题目9 题目10 题目1 小蓝的I ...

  4. 蓝桥杯模拟赛第二场(web)

    文章目录 蓝桥杯模拟赛第二场(web) 1 卡片化标签页 2 随机数生成器 3 个人博客 4 学生成绩统计 5 水果摆盘 6 给页面化个妆 7 小兔子爬楼梯 8 时间管理大师 9 购物车 10 菜单树 ...

  5. 2022 第十四届蓝桥杯模拟赛第一期(题解与标程)

    第十四届蓝桥杯模拟赛第一期 1. 二进制位数 问题描述 答案提交 参考答案 2. 晨跑 问题描述 答案提交 参考答案 3. 调和级数 问题描述 答案提交 参考答案 程序验证 4. 山谷 问题描述 答案 ...

  6. 【蓝桥杯Web】大一小白参与蓝桥杯模拟赛二期web组体会

    目录 前言 一.相关比赛介绍 1.ACM国际大学生程序设计竞赛 2.蓝桥杯 3.GPLT团队程序设计天梯赛 4.leetcode周赛和双周赛 5.PAT 二.蓝桥杯 1.应该参加蓝桥杯吗? 2.如何进 ...

  7. 第十三届蓝桥杯模拟赛(第二期)试题与题解 C++

    第十三届蓝桥杯模拟赛(第二期)试题与题解 1.试题A [问题描述] ​ 小蓝的IP地址为 192.168. * .21,其中 * 是一个数字,请问这个数字最大可能是多少 ? 题解 IP地址由四个字节组 ...

  8. 长沙学院2022蓝桥杯模拟赛一

    长沙学院2022蓝桥杯模拟赛一_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJhttps://ac.nowcoder.com/acm/contest/26010#ques ...

  9. 第十四届蓝桥杯模拟赛(第三期)Java组个人题解

    第十四届蓝桥杯模拟赛(第三期)Java组个人题解

  10. 蓝桥杯嵌入式CT117E硬件开发平台经验分享11 | 第九届蓝桥杯国赛题

    基于 基于 CT117E 嵌入式竞赛板 嵌入式竞赛板 的 "电子秤"程序设计与调试 赛题硬件框图 由于赛题细节多,赛题PDF要求书放入了附件,链接后续加入.本文主要讲述本届题目的困 ...

最新文章

  1. 雷军坚持了 10 年的东西,现在彻底凉了
  2. 【arduino】arduino ISP下载程序方法,用arduino uno给M5 Module DC MOTOR下载程序
  3. docker安装logstash及logstash配置
  4. 开课吧 Python专家级编程:机制与实操
  5. 容器的基础 XmlBeanFactory(下篇)
  6. 软银准备以超400亿美元向英伟达出售Arm,交易最快下周达成
  7. 蔚来宣布再次完成1亿美元可转债融资
  8. 12c rman中输入sql命令
  9. Atitit nosql的概念与attilax的理解 目录 1. 常见的nosql 二、Redis,Memcache,MongoDb的特点 1 HBase 1 2. Nosql的核心nosql 1
  10. android反编译软件Mac,在Mac上进行安卓反编译
  11. RINEX 3.02版本文件格式介绍
  12. 解决steam无法启动gta5报错msvcp140.dll丢失
  13. Linux从入门到精通二(Windows:你知道我的兄弟Linux吗?)
  14. 使用canvas绘制一个三角形
  15. 计算机网络的三大功能,计算机网络的三大主要功能是什么
  16. Python有趣的小案例-美国队长盾牌
  17. 怎么用计算机搜索文件,如何查找文件 巧用Win7快速查找文件
  18. vim使用自定义snippets
  19. KUKA 机器人SPS.SUB程序解析
  20. 2021-08-14 《 生活大爆炸版石头剪刀布》P1328

热门文章

  1. 克里斯坦森:管理水平高的公司往往离崩塌不远
  2. Rust: HDF5文件的处理探索(to be continued.......)
  3. Julia: 如何转换PyPlot的X轴的日期格式?
  4. sqlite数据库的char,varchar,text,nchar,nvarchar,ntext的区别(转)
  5. 【交通流预测】基于matlab BP神经网络短时交通流预测【含Matlab源码 687期】
  6. 【语音去噪】基于matlab小波软阈值语音降噪【含Matlab源码 531期】
  7. 【基础教程】基于matlab GUI界面介绍与搭建【含Matlab源码 189期】
  8. 【基础教程】基于matlab疫情防护动图制作【含Matlab源码 028期】
  9. matlab 流水灯,Matlab生成stm32代码
  10. 【C++】STL--常用算法