当前位置: 首页 > news >正文

《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(43)阴阳镜照连通 - 岛屿数量(DFS、BFS)

《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(43)阴阳镜照连通 - 岛屿数量(DFS、BFS)

哪吒在数据修仙界中继续他的修炼之旅。这一次,他来到了一片神秘的阴阳镜湖,湖面上倒映着一片由二维网格构成的岛屿世界。湖边有一块巨大的石碑,上面刻着一行文字:“欲破此湖,需以阴阳镜之力,照连通,岛屿数量显真身。”

哪吒定睛一看,石碑上还有一行小字:“二维网格[ [1, 1, 0, 0], [1, 1, 1, 0], [0, 0, 0, 1] ]中的岛屿数量为2。”哪吒心中一动,他知道这是一道关于计算岛屿数量的难题,需要通过深度优先搜索(DFS)或广度优先搜索(BFS)的方法,找到所有连通的陆地块。

暴力解法:阴阳镜的初次尝试

哪吒心想:“要计算岛屿数量,我可以逐个格子检查。”他催动阴阳镜之力,从网格的左上角开始,逐个格子检查,一旦发现陆地(1),就尝试向四个方向扩展,标记所有连通的陆地。

void dfs(vector<vector<int>>& grid, int i, int j) {
   
    if (i < 0 || i >= grid.size() || j < 0 || j >= grid[0].size() || grid[i][j] != 1) return;
    grid[i][j] = 0; // 将访问过的陆地标记为0
    dfs(grid, i + 1, j);
    dfs(grid, i - 1, j);
    dfs(grid, i, j + 1);
    dfs(grid, i, j - 1)

相关文章:

  • 使用CLINE来实现智能家居控制系统
  • c#Winform也可以跨平台了GTK框架GTKSystem.Windows.Forms
  • Centos7使用docker搭建redis集群
  • leetcode 42. 接雨水
  • AD画板学习
  • [JAVASE] Collection集合的遍历
  • MySQL常用函数详解及SQL代码示例
  • Vue 的 v-if 和 v-else-if 如何使用?
  • 信奥赛CSP-J复赛集训(模拟算法专题)(16):P6386 [COCI 2007/2008 #4] VAUVAU
  • DeepSeek本地部署 (Windows+Ollama+Docker Desktop+ RAGFlow)
  • mybatismybatis-plus
  • Spring Boot 3.x 中 @NotNull 与 @NonNull 的深度解析
  • 三分钟掌握视频剪辑 | 在 Rust 中优雅地集成 FFmpeg
  • 天梯赛-前世档案 二进制的巧妙使用
  • Java基础语法练习43(线程)
  • vue3+vite+ts+router4+Pinia+Axios+sass 从0到1搭建
  • linux-5.10.110内核源码分析 - bcm2711 SATA驱动(AHCI)
  • linux 源码编译安装
  • 基于Babylon.js的Shader入门二(让Shader使用一个纹理)
  • Mybatis批量操作
  • 第十二届警博会在京开幕:12个国家和地区835家企业参展
  • AI含量非常高,2025上海教育博览会将于本周五开幕
  • 时隔近4年再出征!长三丙成功发射通信技术试验卫星十九号
  • 库尔德工人党决定自行解散
  • 数说母亲节|全球11亿女性进入更年期,“不是忍忍就好”
  • 印度外交秘书:印巴军方将于12日再次对话