每日算法(四十三)-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为了更改的规划城市,需要统计楼栋数目信息。相关推荐

  1. 大学四年Java后端学习路线规划,所有私藏资料我都贡献出来了,不看毕业肯定后悔!!!

    一定要走在学校前面自学,规划好自己的时间,按照自己的路线走. 大学四年Java后端学习路线规划,所有私藏资料我都贡献出来了,不看毕业肯定后悔!!! 学习路线与资源方法 一.第一件事,很重要!!! 二. ...

  2. java经典算法四十题

    java经典算法四十题 [程序9]题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 ".例如6=1+2+3.编程找出1000以内的所有完数. public class W ...

  3. java回文数算法for_【Java】【每日算法/刷穿 LeetCode】9. 回文数(简单)

    首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]9. 回文数(简单) 宫水三叶发布于 今天 15:30 题目描述 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从 ...

  4. 四十三、深入Java中的数组流,数据流和对象流操作

    @Author:Runsen @Date:2020/6/8 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

  5. java环形链表_数据结构和算法(四)Java实现环形链表

    1. 数据结构和算法(四)Java实现环形链表 1.1 约瑟夫问题 约瑟夫问题:公元66年,约瑟夫不情愿地参与领导了犹太同胞反抗罗马统治的起义,后来起义失败,他和一些宁死不降的起义者被困于一个山洞之中 ...

  6. Java Jvm 中的垃圾回收机制中的思想与算法 《对Java的分析总结》-四

    Java中的垃圾回收机制中的思想与算法 <对Java的分析总结>-四 垃圾回收机制 中的思想与算法 引用计算法 给对象中添加一个引用计数器,每当一个地方引用它的时候就将计数器加1,当引用失 ...

  7. 整数反转leetcode java_【Java】【每日算法/刷穿 LeetCode】7. 整数反转(简单)

    首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]7. 整数反转(简单) 宫水三叶发布于 今天 12:10 题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数 ...

  8. java编写字母z算法_【Java】【每日算法/刷穿 LeetCode】6. Z 字形变换(中等)

    首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]6. Z 字形变换(中等) 宫水三叶发布于 今天 12:03 题目描述 将一个给定字符串 s 根据给定的行数 numRows , ...

  9. java 最长回文_【Java】【每日算法/刷穿 LeetCode】5. 最长回文子串(中等)

    首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]5. 最长回文子串(中等) 宫水三叶发布于 今天 12:00 题目描述 给你一个字符串 s,找到 s 中最长的回文子串. 示例 ...

最新文章

  1. MyCat实战--读写分离/数据分片/mycat集群/haproxy负载均衡
  2. mongodb与mysql命令对比
  3. SAP Fiori里的List是如何做到懒加载Lazy load的
  4. egret3D与2D混合开发,画布尺寸不一致的问题
  5. netcore一键部署到linux服务器以服务方式后台运行
  6. spring的beanutils工具类_基于spring-beans实现工具类BeanUtils基于Class实例化注入对象及查找方法、复制属性等操作...
  7. 《软件项目管理(第二版)》第 5 章——项目进度和成本管理 重点部分总结
  8. php如何检查图片是否一样,图片检测 - PHP判断真实图片
  9. 架构设计(6)---Web架构师究竟都要学些什么?
  10. pycharm快捷键大全图_十个Pycharm使用小技巧——提升效率
  11. 2016年虾神公众号预告
  12. 【AliOS Studio】AliOS Studio初体验
  13. 一级计算机快捷键大全,计算机快捷键大全(最全篇)
  14. 0103 混蛋罗心得[装*技巧]
  15. mysql 导出dmp文件_Linux环境下使用crontab实现mysql定时备份
  16. Python——保存图片到本地
  17. 淘宝分拆为三家独立公司:淘宝、商城和一淘
  18. halcon学习教程2-相机畸变矫正
  19. 天猫“大数据”杀熟,如何避免多花冤枉钱方法总结
  20. Clojure的并发(一) Ref和STM

热门文章

  1. 编程命名规范—四种命名方法
  2. fwrite函数与fflush函数
  3. ISO20000信息技术服务管理体系认证条件
  4. ubuntu 添加中文拼音输入法
  5. python中key=lambda_排序后的语法(key=lambda:…)
  6. HBulider X js内存溢出
  7. 前端学习笔记 - 触摸有几个事件?
  8. MySQL的TRUNCATE()函数
  9. [Invariance Matters: Exemplar Memory for Domain Adaptive Person Re-identification 魔改代码
  10. Win7安装.Net Framework 4.5.2失败最有效的解决方法