题目描述

  • Descriptions:
    由于近日阴雨连天,约翰的农场中中积水汇聚成一个个不同的池塘,农场可以用 N x M (1 <= N <= 100; 1 <= M <= 100) 的正方形来表示。农场中的每个格子可以用’W’或者是’.'来分别代表积水或者土地,约翰想知道他的农场中有多少池塘。池塘的定义:一片相互连通的积水。任何一个正方形格子被认为和与它相邻的8个格子相连。
    给你约翰农场的航拍图,确定有多少池塘

  • Input
    Line 1: N 和 M
    Lines 2…N+1: M个字符一行,每个字符代表约翰的农场的土地情况。每个字符中间不包含空格

  • Output
    Line 1: 池塘的数量

解析

从第一个是“水洼”的点开始深搜,扫描该“水洼”的四面八方八个方向,若为“水洼”则全部将其“清除”,当一个“水洼”的全部“水点”都消除,则count++,直到扫描完所有的位置

代码

public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int N=scanner.nextInt();int M=scanner.nextInt();char[][] matrix=new char[N][M];for (int i = 0; i < N; i++) {matrix[i]=scanner.next().toCharArray();            }int count=0;for (int i = 0; i < N; i++) {for (int j = 0; j < M; j++) {if(matrix[i][j]=='W') {//清楚与该水洼相连的所有水洼dfs(matrix, i, j);count++;}}}System.out.println(count);}private static void dfs(char[][] matrix,int x,int y) {//清除当前”水点“matrix[x][y]='.';//查找水洼的八个方向for (int i = -1; i < 2; i++) {  //-1 0 1 两个坐标凑齐,一(x,y)为中心的所有点for (int j = -1; j < 2; j++) {if(i==0&&j==0)continue;if(i+x>=0&&i+x<matrix.length&&j+y>=0&&j+y<matrix[0].length) {if (matrix[i+x][j+y]=='W') {dfs(matrix, i+x, y+j);}}}   }   }

算法很美:水洼数(dfs)深搜相关推荐

  1. 水洼数 DFS 蓝桥杯 java代码

    水洼数 DFS 蓝桥杯 java代码 有一个大小为N * M的院子,雨后积起了水,八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼 限制条件 N, M <=100 10 12 W.. ...

  2. <<算法很美>>——(七)——DFS典题(一):水洼数目

    目录 问题描述 问题分析 放码过来 问题描述 有一个大小为N×MN×M N\times MN×M的园子,雨后积起了水.八连通的积水被认为是连接在一起的.请求出园子里总共有多少水洼?八连通指的是下图中相 ...

  3. 水洼数dfs(java)

    问题描述: 有一个大小为 N×M 的园子,雨后积起了水.八连通的积水被认为是连接在一起的.请求出 园子里总共有多少水洼? *限制条件N, M ≤ 100 样例:输入 N=10, M=12园子如下图 ( ...

  4. <<算法很美>>——(七)——DFS典题(二):数独游戏

    目录 问题描述 问题分析 放码过来: 问题描述 如[图1.png],玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一 行.每一列.每一个同色九宫内的数字均含1-9,不重复. 数 ...

  5. 【DFS练习】水洼数

    问题描述: 水洼数目有一个大小为N * M的院子,雨后积起了水, 八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼 限制条件 N, M <=100 测试集在代码后面 总体思路: 一个 ...

  6. C语言水洼数算法,C++ 数据结构之水洼的数量算法

    C++ 数据结构之水洼的数量算法 题目: 有一个大小为N*M的园子, 雨后起了积水. 八连通的积水被认为是连接在一起的. 请求出园子里总共有多少水洼. 使用深度优先搜索(DFS), 在某一处水洼, 从 ...

  7. C语言水洼数算法,水洼的数量算法 代码(C)

    题目: 有一个大小为N*M的园子, 雨后起了积水. 八连通的积水被认为是连接在一起的. 请求出园子里总共有多少水洼. 使用深度优先搜索(DFS), 在某一处水洼, 从8个方向查找, 直到找到所有连通的 ...

  8. 水洼数(Java)(dfs)

    题解: import java.util.Scanner;public class Practice_水洼数 {static Scanner in = new Scanner(System.in);s ...

  9. 算法学习 (门徒计划)3-3 深搜(DFS)与广搜(BFS)及经典问题 学习笔记

    算法学习 (门徒计划)3-3 深搜(DFS)与广搜(BFS)及经典问题 学习笔记 前言 深搜与广搜 搜索的核心概念 问题求解树 搜索剪枝和优化 问题求解树的状态 对比深搜与广搜 DFS-深度(deep ...

  10. 深度搜索—-深度搜索解决矩阵搜索问题(水洼数计算)

    深度搜索--深度搜索解决矩阵搜索问题(水洼数计算) 一.题目 有一个大小为N*M的园子,雨后积起了水.八连通的计税被认为是连接在一起的.请求出园子里总共有多少水洼? (八连通指的是下图中相对w的*的部 ...

最新文章

  1. win10安装JDK cmd中可以运行java,但不能用javac,解决方案
  2. paramiko基础
  3. Vallog可以识别的错误及错误提示
  4. linux关于mysql_Linux关于MySQL的常用操作
  5. 12月9日 perform使用入门
  6. 项目启动及需求分析(靳嘉豪、胡新宇、李晨曦、杨航、李瑶)团队作业
  7. maven 引入外部jar包的几种方式
  8. 离京2小时,快手百亿入云,一切为了「看见」
  9. tomcat 7 无法打开管理页面
  10. SQL Server2005下载地址
  11. 我的五年百度博客文章列表
  12. Android Srt和Ass字幕解析器
  13. win10环境下安装AutoCAD2006+南方CASS7.1 【家庭中文版和非家庭中文版】
  14. 基于PHP的班级分数量化管理系统
  15. 亚马逊云的服务器(EC2)+阿里云的域名,添加ssl证书
  16. Cell | 共生菌群通过γδ T细胞促进肺癌的发展
  17. golang_iota
  18. Traefik v2.9-IngressRoute
  19. 华硕笔记本触控板有linux驱动吗,华硕笔记本怎么下载触控板驱动
  20. Linux下NFS服务器的配置 (二)

热门文章

  1. Eclipse: The superclass “jakarta.servlet.http.HttpServlet“ was not found on the Java Build Path
  2. AirServer一款强大的无线投屏软件 适用于多种应用场景
  3. 用shtml来include网页文件(开启SSI)
  4. OpenCV + Eclipse CDT + MinGW超爽使用体验以及常见问题合辑
  5. 应用数学课堂笔记(一)——欧拉方程
  6. 设计模式之外观模式详解(附应用举例实现)
  7. 管道日了狗-while read line大坑
  8. 抽屉原理(鸽巢原理)
  9. 爆破试验时的压力曲线
  10. Java中的throws关键字