C/C++ DFS深度优先搜索面试算法题

news/2024/7/20 22:32:59 标签: 算法, 深度优先

1.岛屿的个数

https://blog.csdn.net/qq_36136459/article/details/104326796

给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。要求可以持续的工作

输入:

5 5
11110
11010
11000
00000

输出: 1

1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 #define N 4
 5 #define M 5
 6 
 7 void DFS(int a[N][M],int i,int j)
 8 {
 9     a[i][j] = 0;
10     if(i-1>0 && a[i-1][j] == 1){
11         DFS(a,i-1,j);
12     }
13     if(i+1<N-1 && a[i+1][j] == 1){
14         DFS(a,i+1,j);
15     } 
16     if(j-1>0 && a[i][j-1] == 1){
17         DFS(a,i,j-1);
18     }
19     if(j+1 <M-1 && a[i][j+1] == 1){
20         DFS(a,i,j+1);
21     }
22 }
23 
24 int main() 
25 {
26     int cout,i,j;
27     int a[N][M] = {{1,1,1,1,0},{1,1,0,1,0},{1,1,0,0,0},{0,0,0,0,0}};
28     
29     for(i = 0;i<N;i++)
30     {
31         for(j = 0;j<M;j++)
32         {
33             if(1 == a[i][j])
34             {
35                 DFS(a,i,j);
36                 cout++;
37             }
38         }
39     }
40     printf("岛屿得到数量为%d\n",cout);
41     
42     return 0;
43 }


http://www.niftyadmin.cn/n/5065267.html

相关文章

怎么通过docker/portainer部署vue项目

这篇文章分享一下今天通过docker打包vue项目&#xff0c;并使用打包的镜像在portainer上部署运行&#xff0c;参考了vue-cli和docker的官方文档。 首先&#xff0c;阅读vue-cli关于docker部署的说明 vue-cli关于docker部署的说明https://cli.vuejs.org/guide/deployment.html#…

C++ -- 学习系列 关联式容器 set 与 map

一 关联式容器是什么&#xff1f; c 中有两种容器类型&#xff1a;关联式容器与序列式容器&#xff08;顺序容器&#xff09; 关联式中的容器是按照关键字来存储与访问的&#xff0c;序列式容器&#xff08;顺序容器&#xff09;则是元素在容器中的相对位置来存储与访问的。…

STM32复习笔记(六):STM32远程升级BootLoader相关

目录 Preface&#xff1a; &#xff08;一&#xff09;STM32上电启动流程 &#xff08;二&#xff09;BootLoader相关 &#xff08;三&#xff09;Clion配置 Preface&#xff1a; 有关STM32的BootLoader主要还是参考了许多大佬的文章&#xff0c;这里只是简单地列举一下&am…

Debezium日常分享系列之:使用数据库中的数据流进行在线机器学习

Debezium日常分享系列之&#xff1a;使用数据库中的数据流进行在线机器学习 一、背景介绍二、数据集准备三、使用 Apache Flink 进行分类四、使用 Debezium 和 Kafka 作为源数据流五、构建 Flink 流 k-means六、评估模型七、使用 Apache Spark 进行分类八、定义数据流九、定义和…

嵌入式Linux应用开发-驱动大全-第一章同步与互斥②

嵌入式Linux应用开发-驱动大全-第一章同步与互斥② 第一章 同步与互斥②1.3 原子操作的实现原理与使用1.3.1 原子变量的内核操作函数1.3.2 原子变量的内核实现1.3.2.1 ATOMIC_OP在 UP系统中的实现1.3.2.2 ATOMIC_OP在 SMP系统中的实现 1.3.3 原子变量使用案例1.3.4 原子位介绍1…

【云备份项目】:环境搭建(g++、json库、bundle库、httplib库)

文章目录 1. g 升级到 7.3 版本2. 安装 jsoncpp 库3. 下载 bundle 数据压缩库4. 下载 httplib 库从 Win 传输文件到 Linux解压缩 1. g 升级到 7.3 版本 &#x1f517;链接跳转 2. 安装 jsoncpp 库 &#x1f517;链接跳转 3. 下载 bundle 数据压缩库 安装 git 工具 sudo yum…

云原生微服务 第六章 Spring Cloud Netflix Eureka集成远程调用、负载均衡组件OpenFeign

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 文章目录 系列文章目录前言1、OpenFeign的实现…

怎么才能实现一个链接自动识别安卓.apk苹果.ipa手机和win电脑wac电脑

您想要实现的功能是通过检测用户代理&#xff08;User Agent&#xff09;来识别访问设备类型并根据设备类型展示相应的页面。您可以根据以下步骤进行实现&#xff1a; 选择后端语言和框架&#xff0c;例如&#xff1a;Node.js、Express。 创建一个新的Express项目。 编写一个…