BFS解决FloodFill算法:(Leetcode:200. 岛屿数量)

devtools/2024/11/13 15:49:45/

题目链接:200. 岛屿数量 - 力扣(LeetCode) 

本题由于没有给出开始搜索的位置,所以每一个位置都要进行一次广度优先搜索 

另外为了不修改原数组数据,需要设置一个bool类型的二维数组vis来判断某个位置是否被搜索过

class Solution {int dx[4]={1,-1,0,0};int dy[4]={0,0,1,-1};typedef pair<int,int> PII;int m=0,n=0;vector<vector<bool>> vis;//指示数组,指示某个位置是否被搜索过
public:int numIslands(vector<vector<char>>& grid) {int ret=0;//岛屿数量m=grid.size();n=grid[0].size();vis.resize(m);//初始化指示数组for(int i=0;i<m;++i)//初始化指示数组{vis[i].resize(n);for(int j=0;j<n;++j) vis[i][j]=false;}//每个位置都要进行一次广度优先搜索for(int i=0;i<m;++i){for(int j=0;j<n;++j){if(grid[i][j]=='1'&&!vis[i][j]){++ret;//广度优先搜索bfs(grid,i,j);}}}return ret;} //广度优先搜索void bfs(vector<vector<char>>& grid,int i,int j){queue<PII> q;q.push({i,j});vis[i][j]=true;while(q.size()){int a=q.front().first;int b=q.front().second;q.pop();for(int k=0;k<4;++k){int x=a+dx[k];int y=b+dy[k];if(x>=0&&x<m&&y>=0&&y<n&&grid[x][y]=='1'&&!vis[x][y]){q.push({x,y});vis[x][y]=true;}}          }} 
};

http://www.ppmy.cn/devtools/17445.html

相关文章

鸿蒙应用ArkTS开发- 选择图片、文件和拍照功能实现

前言 在使用App的时候&#xff0c;我们经常会在一些社交软件中聊天时发一些图片或者文件之类的多媒体文件&#xff0c;那在鸿蒙原生应用中&#xff0c;我们怎么开发这样的功能呢&#xff1f; 本文会给大家对这个功能点进行讲解&#xff0c;我们采用的是拉起系统组件来进行图片…

03-JAVA设计模式-状态模式

状态模式 什么是状态模式 Java中的状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;主要用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。状态模式允许一个对象在其内部状态改变时改变它的行为&#xff0c;使得对象看起来似乎…

笔记:Python 循环结构练习题

文章目录 前言一、Python 循环结构是什么&#xff1f;二、选择题2.填空题 总结 前言 欢迎来到Python循环结构的练习题目录&#xff01;本系列旨在帮助您巩固和提升您对Python循环结构的理解和应用能力。循环结构是编程中的重要概念之一&#xff0c;通过它&#xff0c;您可以轻…

OpenStack云计算(十)——OpenStack虚拟机实例管理,增加一个计算节点并进行实例冷迁移,增加一个计算节点的步骤,实例冷迁移的操作方法

项目实训一 本实训任务对实验环境要求较高&#xff0c;而且过程比较复杂&#xff0c;涉及的步骤非常多&#xff0c;有一定难度&#xff0c;可根据需要选做。可以考虑改为直接观看相关的微课视频 【实训题目】 增加一个计算节点并进行实例冷迁移 【实训目的】 熟悉增加一个…

MATLAB实现蚁群算法优化柔性车间调度(ACO-fjsp)

蚁群算法优化车间调度的步骤可以分为以下几个主要阶段&#xff1a; 1.初始化阶段&#xff1a; 设置算法参数&#xff0c;如信息素浓度、启发式因子等。这些参数将影响蚂蚁在选择路径时的决策过程。 确定车间调度的具体问题规模&#xff0c;包括工件数量、机器数量以及每个工件…

模拟电路 第三章(模拟集成电路)

一、模拟集成电路中的直流偏置技术 1、镜像电流源 镜像电流源的电路图如下图所示&#xff0c;、的参数完全相同&#xff0c;即、&#xff0c;由于两管具有相同的基-射极间电压&#xff08;&#xff09;&#xff0c;所以、。当BJT的较大时&#xff0c;基极电流可以忽略&#xf…

C语言求 MD5 值

MD5值常被用于验证数据的完整性&#xff0c;嵌入式开发时经常用到。md5sum命令可以求MD5码&#xff0c;下面介绍如何用C语言实现MD5功能。 一、求字符串MD5值 1、md5sum命令 $ echo -n "12345678" | md5sum //获取"12345678"字符串的md5值 结果&…

html、css、QQ音乐移动端静态页面,资源免费分享,可作为参考,提供InsCode在线运行演示

CSDN将我上传的免费资源私自变成VIP专享资源&#xff0c;且作为作者的我不可修改为免费资源&#xff0c;不可删除&#xff0c;寻找客服无果&#xff0c;很愤怒&#xff0c;&#xff08;我发布免费资源就是希望大家能免费一起用、一起学习&#xff09;&#xff0c;接下来继续寻找…