DFS相关问题(求地图中岛屿个数)

[算法提高] DFS 深度优先搜索 数岛屿连通块面积 [问题背景] 假设'#'是陆地,'.'是海洋。 我们从图中把左、上、右、下四个方向相邻的'#'连起来作为一个连通块,也就是一个“岛屿”,每个岛屿的面积就是'#'的个数。 如图: 图中有三个连通块,按自左向右再自上而下的顺序,三个连通块的面积依次是4、2、1. 输出这些连通块的面积。 [测试样例1] ##.#. #..#. #...# [输出样例1] 4 2 1 [测试样... 阅读详情
//求一个地图中岛屿的个数
#include<iostream>
using namespace std;
const int N=1e3+9;
char mp[N][N];
int visit[N][N],color[N][N];
bool vis[N*N]; 
int scc=0;
int n;
//上下左右 
int dx[]={0,0,-1,1};
int dy[]={1,-1,0,0};

bool inmp(int x,int y){
	if(x>=1&&x<=n&&y<=n&&y>=1) return  true;
	else return false;
} 

//实现从坐标(x,y)开始的深度搜索,要是(x,y)这个点可以驻足,那么就在这个地方标记一下,
//同时以这个点为根据点 ,往其他方向深度搜索,要是不可以驻足,那么就没有必要去标记,
//或者标记一下这个点不能去 
void dfs(int x,int y){
	if(!visit[x][y]&&mp[x][y]=='#'&&inmp(x,y)) {
		visit[x][y]=1;
		color[x][y]=scc;
		for(int i=0;i<4;++i){
			int nx=x+dx[i];
			int ny=y+dy[i];
			dfs(nx,ny);
      //那个为什么不用回溯
		}
	}
}
int main(void){
	cin>>n;
	//输入地图 
	for(int i=1;i<=n;++i){
		for(int j=1;j<=n;++j){
			cin>>mp[i][j];
		}
	}
	//开始遍历
	for(int i=1;i<=n;++i){
		for(int j=1;j<=n;++j){
			//没有被染色同时还是一个岛屿 
			if(mp[i][j]=='#'&&color[i][j]==0){
				scc++;
				dfs(i,j); 
			}
		}
	} 
	cout<<scc;
	return 0;
} 

leetcode刷题(javaScript)——回溯、递归、dfs相关场景题总结 递归通常用于解决可以被分解为相同问题的子问题的情况,通过不断调用自身来解决问题。当涉及到回溯、递归、深度优先搜索(DFS)相关的场景题时,通常可以将它们放在一起综合考虑,因为它们之间有一定的联系和相互影响。以下是一些相关的LeetCode场景题以及解题技 阅读详情

相关推荐

PaddleOCR 与 PaddleX 调试

本文介绍了PaddleOCR与PaddleX的安装调试过程及应用对比。首先详细说明了环境准备步骤,包括安装ccache、设置环境变量及创建conda虚拟环境,提供了精简安装和源码安装两种方式。接着展示了使用PaddleOCR进行发票和手写汉字识别的测试结果,指出部分手写识别存在误差。随后对比了两者的差异:PaddleOCR专注于OCR算法优化,PaddleX则提供全流程工具链和标准化部署方案。最后演示了如何通过PaddleX部署OCR服务,包括API启动方法和客户端调用示例,为开发者提供了两种不同场景下的O

weixin_42176639的博客 1452

岛屿问题(dfs典型问题求解)

这里就像一种蔓延效果,一旦找到1,就对这个数的四个子节点进行dfs操作,如果这个子节点在范围内,并且也是1,那么也进行同样的操作,以此类推,这样我们就将这个节点相邻的所有1的节点给改成了2,并且count++,这就是一个岛屿,最后将count返回就行。但是二叉树和网格是有区别的:二叉树有方向,而网格没有,所以会出现有节点被重复遍历的情况,因此,需要我们将每一个遍历过的岛屿节点设为2,每次遍历只遍历1的节点。对于这样的网格状问题,将0看成水,将1看成岛,进而可以出现类似的问题,比如求岛屿面积,周长等等。

2501_91482594的博客 1110

电商产品组合策略:引流品与利润品的实战方法论

在电商运营中,产品组合策略是提升流量转化与利润增长的核心技术。其基本原理是通过数据化选品构建产品矩阵,利用引流品吸引用户流量,再通过利润品实现商业变现。这种策略不仅能优化广告投放的ROAS(广告投入产出比),还能显著提升客单价。技术实现上需要结合Google Analytics等工具进行归因分析,并运用动态库存管理模型控制风险。该方案特别适用于Amazon、Shopify等电商平台,能有效解决跨境电商业内流量获取与利润创造的平衡难题。通过实战案例可见,合理的产品组合可使客单价提升30-50%,是电商运营必备

weixin_42522009的博客 350

秋招LeetCode刷题Day2 -- DFS深度优先算法之岛屿专题

今天做了一系列岛屿相关的问题, 熟练掌握DFS算法模板如下// 操作// 操作// 淹没。

weixin_45872648的博客 769

基于立创·天猛星MSPM0G3507的简易PID电机控制入门项目实战

本文详细介绍了基于立创·天猛星MSPM0G3507开发板的简易PID电机控制入门项目实战。从硬件选型、电路设计、PCB布局,到软件编程中的编码器读取、PID算法实现与调参,手把手教你完成一个带屏幕显示的电机定速与定距控制项目,是学习嵌入式开发和经典PID控制算法的绝佳实践。

weixin_42596011的博客 509

windows10系统上安装最新版mysql 8.0详细步骤

windows10系统上安装最新版mysql 8.0详细步骤

glei20的博客 6715

DFS(二)岛屿问题合集

深度优先遍历处理岛屿问题:岛屿的周长、被围绕的区域、岛屿数量、岛屿的最大面积

曾几何时的博客 1834

【企业微信自建应用-前端篇】企业微信自建应用开发流程详细介绍

最近接到需求,需要我在企业微信端自建一个应用,用来接受PC端派发的工单,告警,公告等内容。这里写一个帖子汇总一下我经历的全流程开发,当然这是基础的流程啊。因为功能要求也不高。后面如果开发更多的东西再补充。

weixin_44265726的博客 9397

面试热点题:LeetCode岛屿问题DFS 岛屿的数量、周长、最大面积

LeetCode 「岛屿问题」DFS 岛屿的数量、周长、最大面积 了解在网格结构中如何使用DFS 深入浅出 简单易懂

DEXTERFUTIAN的博客 934

30、优化算法在芯片布局与药物设计中的应用

本文探讨了优化算法在芯片布局与药物设计中的关键应用。针对芯片布局问题,提出了一种改进的粒子群优化(PSO)方法,通过引入转向因子、重叠检测与消除机制以及优先处理约束模块,有效优化了芯片面积、线长和运行时间,并在有无布局约束条件下均优于传统方法。在药物设计领域,介绍了基于蚁群优化(ACO)的PLANTS算法,用于解决蛋白质-配体对接问题,通过离散化连续变量、信息素更新、局部搜索和聚类处理,提高了构象预测的准确性。文章还总结了两种算法的操作流程,并展望了未来在多约束集成与算法融合方向的发展潜力。

egg99的博客 94

GeoXCP:可解释人工智能中空间解释的不确定性量化

GeoXCP: uncertainty quantification of spatial explanations in explainable AI提出基于保形预测(conformal prediction)的不确定性量化框架——地理空间解释保形预测(GeoXCP),将空间依赖纳入建模过程,生成具有校准不确定性估计的空间自适应解释。通过大量模拟实验和真实世界数据集验证,GeoXCP在不同地理空间场景中能提供可靠解释并有效量化不确定性,推动可解释地理空间机器学习的发展,帮助决策者评估模型驱动洞察的可信度。

May the Force be with you 242

深度优先搜索DFS:岛屿问题

深度优先搜索DFS:岛屿问题引言DNS实现的基本框架岛屿问题相关例题:求最大面积、求最大值 引言 DFS(深度优先搜索)问题通常是在树或者图结构上使用递归解决的一种常用算法。「网格」结构中也常常会使用到DFS算法来完成。岛屿问题是这类网格 DFS 问题的典型代表。 本文将以岛屿问题为例,展示网格类问题 DFS 通用思路。 网格问题通常是由n个小方格组成一个网格,每个小方格与其上下左右四个方格认为是相邻的,要在这样的网格上进行某种搜索。岛屿问题是一类典型的网格问题。每个格子中的数字可能是 0 或者 1。我们把

weixin_45336248的博客 375

Python 爬虫实战:就业市场趋势数据抓取与行业洞察

在当今竞争激烈的就业市场中,了解行业趋势和就业形势对于求职者、学生以及人力资源专业人士来说至关重要。通过获取和分析就业市场数据,我们可以深入了解不同行业的招聘需求、薪资水平、技能要求等关键信息,从而为职业规划和人才发展提供有力支持。

yansideyucsdn的博客 1406

LeetCode刷题笔记-岛屿问题 DFS

LeetCode刷题笔记-岛屿问题 LeetCode中有许多岛屿类问题,如以下题目: 200. 岛屿数量 463. 岛屿的周长 695. 岛屿的最大面积 827. 最大人工岛 这些题目基本上都是给一个二维数组作为网格,0为海洋1为陆地,然后要你求诸如岛屿最大数量面积周长等问题。 接下来讨论一下此类问题的一个通用解法-DFS。 以LeetCode200. 岛屿数量 为例: 给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向

weixin_42970016的博客 504

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【图论】(一)图论理论基础与岛屿问题

本文整理总结了图论相关理论基础知识,对比总结了深度搜索与广度搜索的区别与模板代码,整理图论中岛屿问题的一类题目,包括岛屿的数量与面积、孤岛的面积,沉没孤岛、建造最大人工岛等问题,同时通过水流问题体现岛屿问题在实际中的应用。

weixin_46216674的博客 1541

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

深度优先搜索(DFS)

深度优先搜索(DFS) 695.岛屿的最大面积 leetcode695 解题思路: 求地图的连通性、走迷宫问题,都可以通过DFS求解,类似的问题还有求岛屿数量、岛屿周长等。 常规套路,定义方向数组dir[][],有时是八个方向,有时候是四个方向。 八个方向:上下左右加对角 dir[8][2]={0,-1,-1,0,0,1,1,0,1,1,1,-1,-1,1,-1,-1} 四个方向:dir[4][2]={0,-1,-1,0,0,1,1,0,} class Solution { public: i

ZZcppc的博客 431

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

代码随想录Day51 99. 岛屿数量,99. 岛屿数量,100. 岛屿的最大面积。

代码随想录Day51 99. 岛屿数量,99. 岛屿数量,100. 岛屿的最大面积。

get_money_的博客 1077

leetcode刷题日记———深度优先搜索(岛屿问题)

岛屿数量 题目描述:给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 输入: 11000 11000 00100 00011 输出: 3 解释: 每座岛屿只能由水平和/或竖直方向上相邻的陆地连接而成 基本思路:深度优先搜索,遍历矩阵中所有为1的网格,然后dfs,这里将访问过的节点做标记,防止再次访问。 代码如下: class Solution:

vinojie的博客 1211

岛屿数量问题(C实现)

岛屿数量问题,面试遇到,这里记录一下题目是这样的刚才整理代码的时候发现,原来是我没有理解完全,写错了,那现在来整理一下思路 题目是这样的 给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 1: 输入: 11110 11010 11000 00000 输出: 1 ...

Mars_PK_KING的博客 7090

13 - 岛屿问题

岛屿问题 1. 岛屿的周长 2. 岛屿的数量 3. 岛屿的最大面积 我们所熟悉的 DFS(深度优先搜索)问题通常是在树或者图结构上进行的。而这篇博客的这三道题是在「网格」结构中进行的DFS。

qq_41721746的博客 328

深度优先搜索 2

从一个点开始,沿着某条路往下走,一直走到底(能深则深),如果走完后发现不能达到目标解,返回到上一个点(不能深则退),换条路,然后继续走到底,如此往复,直至所有可能的结果都被搜索完。这种能深则深,不能深则退的方法,称之为深度优先搜索简称DFS。

墨宸的博客 1212

【Leetcode】【学习计划】【深度优先搜索】岛屿的最大面积

题目来源:https://leetcode-cn.com/problems/max-area-of-island/ 解题思路原文:https://leetcode-cn.com/problems/max-area-of-island/solution/biao-zhun-javadong-tai-gui-hua-jie-fa-100-by-mark-/ 题目 岛屿的最大面积 给你一个大小为 m x n 的二进制矩阵grid。 岛屿 是由一些相邻的 1 (代表土地)构成的组合,这里的「相邻」要求两个1.

qq_24251607的博客 570

代码随想录Day52 101. 孤岛的总面积,102. 沉没孤岛,103. 水流问题,104.建造最大岛屿。

代码随想录Day52 101. 孤岛的总面积,102. 沉没孤岛,103. 水流问题,104.建造最大岛屿。

get_money_的博客 765

LeetCode刷题总结 | 图论1—深度优先搜索&广度优先搜索&一些简单套模板问题

通常我们递归的时候,我们递归搜索需要了解哪些参数,其实也可以在写递归函数的时候,发现需要什么参数,再去补充就可以。一般情况,深搜需要二维数组数组结构保存所有路径,需要一维数组保存单一路径,这种保存结果的数组,我们可以定义一个全局变量,避免让我们的函数参数过多。

wangs29的博客 2966

【LeetCode】岛屿(周长、数量、最大面积、封闭岛屿数)

【LeetCode】岛屿(周长、面积、数量) 岛屿的周长★ LeetCode463. 岛屿的周长 【题目】给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] = 1 表示陆地, grid[i][j] = 0 表示水域。 网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。 岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方

像写诗一样优雅地写代码~ 1万+

LeetCode 题解——岛屿数量

大家好,我是前端西瓜哥,今天我们做一道经典算法题——岛屿数量。 LeetCode 上对应题目为 200 题:https://leetcode-cn.com/problems/number-of-islands/ 这道题归属于岛屿问题,是有固定套路的,那就是 Flood fill 算法。 Flood fill 算法 Flood fill 算法是一种特殊的算法,它在一个区域内,从某个点开始往外扩散找到与其联通的所有点,最终获得一个区域块。 从一个点开始覆盖整个区域的过程,因很像洪水淹没一个岛屿的过程,所以被命

fe_watermelon的博客 5435
上一篇: DFS相关问题-递归实现走迷宫(存在性)
下一篇: DFS(混境之地)
printfLILEI
博客等级 码龄4年 66粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值