算法----------海岛个数问题
一个矩阵中只有0和1两种值,每个位置都可以和自己的上、下、左、右四个位置相连,如果有一片1连在一起,这个部分叫做一个岛,求一个矩阵中有多少个岛?
public class Islands {public static int Islands(int[][] arr) {int land = 0;int line = arr[0].length;int row = arr.length;for (int i = 0; i < row; i++) {for (int j = 0; j < line; j++) {if (arr[i][j] == 1) {G_do(arr, i, j);land++;}}}return land;}public static void G_do(int[][] arr, int row, int line) {if (row < 0 || row >= arr.length || line < 0 || line >= arr[0].length || arr[row][line] != 1) {return;}arr[row][line] = 2;G_do(arr, row + 1, line);G_do(arr, row - 1, line);G_do(arr, row, line + 1);G_do(arr, row, line - 1);}public static void main(String[] args) {int[][] m1 = { { 0, 0, 0, 0, 0, 0, 0, 0, 0 },{ 0, 1, 1, 1, 0, 1, 1, 1, 0 },{ 0, 1, 1, 1, 0, 0, 0, 1, 0 },{ 0, 1, 1, 0, 0, 0, 0, 0, 0 },{ 0, 0, 0, 0, 0, 1, 1, 0, 0 },{ 0, 0, 0, 0, 1, 1, 1, 0, 0 },{ 0, 0, 0, 0, 0, 0, 0, 0, 0 }, };System.out.println(Islands(m1));int[][] m2 = { { 0, 0, 0, 0, 0, 0, 0, 0, 0 },{ 0, 1, 1, 1, 1, 1, 1, 1, 0 },{ 0, 1, 1, 1, 0, 0, 0, 1, 0 },{ 0, 1, 1, 0, 0, 0, 1, 1, 0 },{ 0, 0, 0, 0, 0, 1, 1, 0, 0 },{ 0, 0, 0, 0, 1, 1, 1, 0, 0 },{ 0, 0, 0, 0, 0, 0, 0, 0, 0 }, };System.out.println(Islands(m2));}
}
解题思路就是整体是一个双循环嵌套,按顺序遍历,如果遇到1,进入到G病毒函数中,函数进行疯狗一样递归查找周围有1的岛,找到都标记为2。每进一个G病毒,那么岛数一定是+1。这样循环一遍就得到了岛数。
假如说数据量特别大,矩阵特别大,可以使用多任务同时处理。将矩阵分成几个小的版块,然后每个CPU负责一个版块,最后再利用交并集计算边界,合并一起得到岛的个数。
算法----------海岛个数问题相关推荐
- kmeans中的k的含义_聚类分析:kmeans 算法簇个数的确定
kmeans算法是无监督聚类学习中最常见.最常用的算法之一,其基本原理如下: 1.随机初始化k个聚类中心点,并计算数据中每个点到k个点的距离: 2.将每个数据点分到距离聚类中心点最近的聚类中心中: 3 ...
- 算法---------两个数的交集
两个数组的交集 给定两个数组,编写一个函数来计算它们的交集.示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2] 示例 2:输入: nums1 = [4, ...
- 零起点学算法 3个数比较大小
输入3个整数,将它们从大到小输出.思路提示:假设输入a b c三个数,可以先找出最大数和a交换,确保a最大: 然后剩下两数中找出最大数和b交换,确保b最大:剩下的c就是最小数:输出a b c就是从大到 ...
- Java 算法 约数个数
目录标题 题目描述 解题思路 代码 题目描述 有1个约数的最小数为1(1),有两个约数的最小数为2(1,2)-- 有n个约数的最小数为Sn S1=1 (1) S2=2 (1 2) S3=4 (1 2 ...
- 算术平均值滤波matlab程序,基于S7-1200 AD采样的高效数字滤波算法的设计与实践...
在工业控制中,常常会伴随大量的模拟量数据采样.模拟量采样时,由于待采量本身.传感器和传输过程中的外界干扰,特别是非稳态干扰信号等因素的影响,采样值中通常含有各种周期性和非周期性的噪声和干扰.为得到稳定 ...
- K近邻算法 模拟sklearn调用 自定义优化Knn算法模型 ---完整代码
通过函数与欧拉距离公式实现Knn算法,再调用我们的py文件实现模拟 1.首先设置好欧拉距离公式计算个点之间距离的函数,收集它们的距离. import numpy as np import math f ...
- 深度学习算法和机器学习算法_63种机器学习算法介绍
深度学习算法和机器学习算法 Data Science and analytics are transforming businesses. It has penetrated into all dep ...
- 基于卷积神经网络的密集人群估计/人群计数算法【内含教程和踩坑】
文章目录 前言 一.什么是密集人群估计 二.实验前准备 1.Github开源项目--Awesome Crowd Counting 2.数据集下载 3.环境配置 三.ShanghaiTech数据集实验 ...
- 数据结构和算法基本概念
文章目录 什么是数据结构? 数据 数据元素 数据结构 数据之间的结构关系 逻辑结构 1.特点 2.分类 存储结构 顺序存储 链式存储 什么是算法? 算法的特性 评价算法好坏的方法 时间复杂度 大O的渐 ...
最新文章
- vue webpack打包入口文件是哪个_Vue项目起步
- Keil C语言数据类型,KeilC的指针类型
- Java2021中级面试题
- RDS for MySQL 5.7 备份恢复为本地实例
- iOS:使用集成的支付宝SDK的支付流程
- 测试Robotium
- burpsuite collaborato模块简介 dns log、http_https log、smtp_smtps log
- C# Win32 API 应用
- Algorithm:数学建模大赛(国赛和美赛)的简介/内容、数学建模做题流程、历年题目类型及思想、常用算法、常用工具之详细攻略
- VTK:PolyData之CellTreeLocator
- django设置paypal支付如何获取signature
- 数据结构与算法python描述_数据结构与算法——Python语言描述.pdf
- 千万不要被这些手机充电的谣言给误导了!现在了解还来得及
- WF4.0实战(九):猜数字游戏,测下你的智力
- 云服务器在哪里创建网站目录,如何在云服务器创建根目录
- 计算机网络-自顶向下方法(7th) 第一章 Problems 中英对照
- 评委输入的密码如果不正确,当错误的次数达到5次时,该评委的账号会被锁定.如何解锁呢?
- GDI+ 保存HDC为位图文件
- 变更DirectX SDK版本-DirectX8升级DirectX9
- 除了QQ就是一塌糊涂的日子不会再有了
热门文章
- android的onKeyDown方法,Android:拦截onKeyDown()和onKeyUp()
- 学生的姓名 ,年龄,性别,班级及爱好IDEA代码
- 关于ECMA、ECMAScript、TC39、ES、Stage等概念的科普
- linux将h264文件转化为flv文件
- SDK 下载错误 , simply set anenvironment variable JAVA_ HOME to point toit.
- 真机调试adb:wait for device 解决方案
- hdu 2013 蟠桃记(c语言)
- 小傻羊7.31学习笔记——AOP例子和日志的实现实例
- When You Know-Hooverphonic, 芝华士广告歌完整版
- python 分割字串_在Python中分割,连结和连结字串