leetcode-200. 岛屿数量

1. 题目

leetcode题目链接
在这里插入图片描述

2. 解答

思路:

  1. 需要循环遍历每个节点;
  2. 找到陆地,基于陆地开始遍历陆地的上下左右;
  3. 数组dirm dirn就可以表示某个区域的上下左右;
  4. 标记遍历过的节点;
  5. 设计循环的退出条件;
#include <stdio.h>
#include <stdlib.h>int visited[300][300];
int dirm[] = {0, 0, 1, -1};
int dirn[] = {1, -1, 0, 0};int solve(int **data, int m, int n, int indexm, int indexn)
{if (indexm >= m || indexm < 0 || indexn >=n || indexn < 0) {return 0;}if (data[indexm][indexn] == 0 || visited[indexm][indexn] == 1) {return 0;}visited[indexm][indexn] = 1;int count = 1;for (int i = 0; i < 4; i++) {indexm += dirm[i];indexn += dirn[i];count += solve(data, m, n, indexm, indexn);}return count;}int main()
{int m, n;scanf("%d %d", &m, &n);if (m <= 0 || n < 0) return -1;int **data = malloc(sizeof(int *)*(m + 1));for (int i = 0; i < m; i++) {data[i] = malloc(sizeof(int) * (n+1));for (int j = 0; j < n; j++) {scanf("%d", &data[i][j]);visited[i][j] = 0;}}int count = 0;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (visited[i][j] == 0 && data[i][j] == 1) {int result = 0;result +=solve(data, m, n, i, j);printf("小岛的大小:%d\n", result);count++;}}}printf("岛屿的个数:%d\n", count);for (int i = 0; i < m; i++) {free(data[i]);}free(data);return 0;
}

运行:

G3-3579:~/data/source/leetcode$ gcc 200.c
G3-3579:~/data/source/leetcode$ ./a.out 
4 5   
1 1 0 0 0
1 1 0 0 0
0 0 1 0 0
0 0 0 1 1
小岛的大小:4
小岛的大小:1
小岛的大小:2
岛屿的个数:3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/139139.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Django 01】环境搭配与项目配置

1. 介绍 https://github.com/Joe-2002/sweettalk-django4.2#readme Django 是一个使用 Python 编写的开源 Web 应用程序框架&#xff0c;它提供了一套用于快速开发安全、 可扩展和高效的 Web 应用程序的工具和功能。Django 基于 MVC&#xff08;Model-View-Controller&#xf…

Windows工业三防平板全功能NFC近距离感应一维/二维扫描

Windows系统工业三防平板电脑是一种在智慧工厂仓储物流、MES数采、车载设备、设备检测、自动化控制等领域广泛应用的先进设备。此外&#xff0c;它还在公共服务领域&#xff0c;如高速交通、物流运输、电力检测、公务执法、银行金融、船舶装备、户外勘测、建筑工程、汽车检测、…

使用vscode + vite + vue3+ element3 搭建vue3脚手架

技术栈 开发工具&#xff1a;VSCode 代码管理&#xff1a;Git 前端框架&#xff1a;Vue3 构建工具&#xff1a;Vite 路由&#xff1a;vue-router 状态管理&#xff1a;vuex AJAX&#xff1a;axios UI库&#xff1a;element-ui 3 数据模拟&#xff1a;mockjs css预处理&#xf…

0基础学习VR全景平台篇 第108篇:全景图细节处理(下,航拍)

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; &#xff08;调色前图库&#xff09; &#xff08;原图-大图&#xff09; 一、导入文件 单击右下角导入按钮&#xff0c;选择航拍图片所在文件夹&#xff0c;选择图片&#xff0…

零基础学习HTML5(列表、表格、表单)

01-列表 作用&#xff1a;布局内容排列整齐的区域。 列表分类&#xff1a;无序列表、有序列表、定义列表。 无序列表 作用&#xff1a;布局排列整齐的不需要规定顺序的区域。 标签&#xff1a;ul 嵌套 li&#xff0c;ul 是无序列表&#xff0c;li 是列表条目。 <ul>…

01. 汇编LED驱动实验

01. 汇编LED驱动实验 汇编原理分析为什么要学习Cortex—A汇编STM32IO初始化流程IMX6UL初始化流程 汇编基础处理器内部数据传输指令存储器访问指令 编写驱动编译程序烧写bin文件 汇编原理分析 为什么要学习Cortex—A汇编 需要用汇编初始化一些SOC外设使用汇编初始化DDR&#x…

【mfc/VS2022】计图实验:绘图工具设计知识笔记2

按钮添加处理程序 1.类视图找到对应类右击&#xff0c;类向导 2. 找到对应的的按钮id 如何将画出的两个相交的圆都显示出来&#xff0c;而不是重叠&#xff08;如下图&#xff09;隐藏了一条圆弧 问题如图&#xff1a; 因为矩形和圆心其实是个背景色的封闭图形&#xff0c;所…

如何修复-谷歌浏览器-打开任何一个网页都显示崩溃

早上上班&#xff0c;一如既往的使用谷歌浏览器时&#xff0c;发现异常。 首先是&#xff0c;右下角有个弹窗提示某某插件需要点击更新&#xff0c;然后点了也没用&#xff0c;然后就是打开任何网页都提示‘喔唷 崩溃了’的字眼。 奇怪呀&#xff0c;咱也是第一次碰见这种问题…

树叶识别系统python+Django网页界面+TensorFlow+算法模型+数据集+图像识别分类

一、介绍 树叶识别系统。使用Python作为主要编程语言开发&#xff0c;通过收集常见的6中树叶&#xff08;‘广玉兰’, ‘杜鹃’, ‘梧桐’, ‘樟叶’, ‘芭蕉’, ‘银杏’&#xff09;图片作为数据集&#xff0c;然后使用TensorFlow搭建ResNet50算法网络模型&#xff0c;通过对…

中小企业实现项目管理数字化的关键步骤

在当今竞争激烈的商业环境中&#xff0c;中小企业及初创团队面临着多重项目管理挑战&#xff0c;传统的手动管理方式已经无法满足高效率、高质量的项目执行需求。 那么中小型及成长性企业在项目管理方面&#xff0c;往往会遇到哪些困境呢&#xff1f; 首先&#xff0c;资源浪…

GitHub仓库的README文件无法显示图片问题-非域名污染原因

之前上自己仓库就偶然发现图片不显示现象&#xff0c;当时以为是网络问题就没有留意这事。但是一直不显示就有问题了&#xff01;于是网上搜了一遭&#xff0c;看见大家遇到此现象的原因普遍归于DNS污染1而我的问题原来是MarkDown格式&#xff01; 在图片语法前不要加分区语法…

【数据结构】栈(C语言实现)

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 栈 1.栈1.1栈的概念及结构…