每日算法(四十三)-java为了更改的规划城市,需要统计楼栋数目信息。
每日算法(四十三)-java为了更改的规划城市,需要统计楼栋数目信息。
为了更改的规划城市,需要统计楼栋数目信息。
方法如下,一张航拍照片会被分隔为N*M个小格子,每个格子可以用0跟1来表示。如果楼栋的楼顶出现在了格子里,
那么此格子就被设置为1,出现在相邻格子里的楼顶被记为同一座楼栋,若是斜邻的则记为不同的楼栋。求一张图里的楼栋总数目。
例如,
输入{{0,0,0,0,0},{0,1,1,0,0},{0,0,1,1,0},{0,0,0,0,0},{0,0,0,0,0} };输出的结果应为1
输入{ {0,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,0} }输出的结果应为2、、
这里因为是一个N*M的格子,所以直接就是遍历所有格子,如果是1就先count++,然后根据条件相邻的都代表同一栋,否则继续遍历,这里重点在于判断条件相邻栋的时候我们可以用递归来表达,刚容易理解
代码如下:
public class Build {public void sumBuild(int arr[][]){int count=0;for(int i=0;i<arr.length;i++){for(int j=0;j<arr[0].length;j++){if(arr[i][j]==1){count++;dfs(arr,i,j);}}}System.out.println(count);}private void dfs(int[][] arr, int i, int j) {if(i<0||i>arr.length||j<0||j>arr[0].length){return;}if(arr[i][j]==1){dfs(arr,i-1,j);dfs(arr,i+1,j);dfs(arr,i,j-1);dfs(arr,i,j+1);}}public static void main(String[] args) {Scanner sc = new Scanner(System.in);Build build=new Build();int N = sc.nextInt();int M= sc.nextInt();int[][] arr = new int[N][M];for (int i = 0; i < N; i++) {for (int j = 0; j < M; j++) {arr[i][j] = sc.nextInt();}}build.sumBuild(arr);}}
每日算法(四十三)-java为了更改的规划城市,需要统计楼栋数目信息。相关推荐
- 大学四年Java后端学习路线规划,所有私藏资料我都贡献出来了,不看毕业肯定后悔!!!
一定要走在学校前面自学,规划好自己的时间,按照自己的路线走. 大学四年Java后端学习路线规划,所有私藏资料我都贡献出来了,不看毕业肯定后悔!!! 学习路线与资源方法 一.第一件事,很重要!!! 二. ...
- java经典算法四十题
java经典算法四十题 [程序9]题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 ".例如6=1+2+3.编程找出1000以内的所有完数. public class W ...
- java回文数算法for_【Java】【每日算法/刷穿 LeetCode】9. 回文数(简单)
首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]9. 回文数(简单) 宫水三叶发布于 今天 15:30 题目描述 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从 ...
- 四十三、深入Java中的数组流,数据流和对象流操作
@Author:Runsen @Date:2020/6/8 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...
- java环形链表_数据结构和算法(四)Java实现环形链表
1. 数据结构和算法(四)Java实现环形链表 1.1 约瑟夫问题 约瑟夫问题:公元66年,约瑟夫不情愿地参与领导了犹太同胞反抗罗马统治的起义,后来起义失败,他和一些宁死不降的起义者被困于一个山洞之中 ...
- Java Jvm 中的垃圾回收机制中的思想与算法 《对Java的分析总结》-四
Java中的垃圾回收机制中的思想与算法 <对Java的分析总结>-四 垃圾回收机制 中的思想与算法 引用计算法 给对象中添加一个引用计数器,每当一个地方引用它的时候就将计数器加1,当引用失 ...
- 整数反转leetcode java_【Java】【每日算法/刷穿 LeetCode】7. 整数反转(简单)
首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]7. 整数反转(简单) 宫水三叶发布于 今天 12:10 题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数 ...
- java编写字母z算法_【Java】【每日算法/刷穿 LeetCode】6. Z 字形变换(中等)
首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]6. Z 字形变换(中等) 宫水三叶发布于 今天 12:03 题目描述 将一个给定字符串 s 根据给定的行数 numRows , ...
- java 最长回文_【Java】【每日算法/刷穿 LeetCode】5. 最长回文子串(中等)
首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]5. 最长回文子串(中等) 宫水三叶发布于 今天 12:00 题目描述 给你一个字符串 s,找到 s 中最长的回文子串. 示例 ...
最新文章
- MyCat实战--读写分离/数据分片/mycat集群/haproxy负载均衡
- mongodb与mysql命令对比
- SAP Fiori里的List是如何做到懒加载Lazy load的
- egret3D与2D混合开发,画布尺寸不一致的问题
- netcore一键部署到linux服务器以服务方式后台运行
- spring的beanutils工具类_基于spring-beans实现工具类BeanUtils基于Class实例化注入对象及查找方法、复制属性等操作...
- 《软件项目管理(第二版)》第 5 章——项目进度和成本管理 重点部分总结
- php如何检查图片是否一样,图片检测 - PHP判断真实图片
- 架构设计(6)---Web架构师究竟都要学些什么?
- pycharm快捷键大全图_十个Pycharm使用小技巧——提升效率
- 2016年虾神公众号预告
- 【AliOS Studio】AliOS Studio初体验
- 一级计算机快捷键大全,计算机快捷键大全(最全篇)
- 0103 混蛋罗心得[装*技巧]
- mysql 导出dmp文件_Linux环境下使用crontab实现mysql定时备份
- Python——保存图片到本地
- 淘宝分拆为三家独立公司:淘宝、商城和一淘
- halcon学习教程2-相机畸变矫正
- 天猫“大数据”杀熟,如何避免多花冤枉钱方法总结
- Clojure的并发(一) Ref和STM
热门文章
- 编程命名规范—四种命名方法
- fwrite函数与fflush函数
- ISO20000信息技术服务管理体系认证条件
- ubuntu 添加中文拼音输入法
- python中key=lambda_排序后的语法(key=lambda:…)
- HBulider X js内存溢出
- 前端学习笔记 - 触摸有几个事件?
- MySQL的TRUNCATE()函数
- [Invariance Matters: Exemplar Memory for Domain Adaptive Person Re-identification 魔改代码
- Win7安装.Net Framework 4.5.2失败最有效的解决方法