算法很美:水洼数(dfs)深搜
题目描述
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)深搜相关推荐
- 水洼数 DFS 蓝桥杯 java代码
水洼数 DFS 蓝桥杯 java代码 有一个大小为N * M的院子,雨后积起了水,八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼 限制条件 N, M <=100 10 12 W.. ...
- <<算法很美>>——(七)——DFS典题(一):水洼数目
目录 问题描述 问题分析 放码过来 问题描述 有一个大小为N×MN×M N\times MN×M的园子,雨后积起了水.八连通的积水被认为是连接在一起的.请求出园子里总共有多少水洼?八连通指的是下图中相 ...
- 水洼数dfs(java)
问题描述: 有一个大小为 N×M 的园子,雨后积起了水.八连通的积水被认为是连接在一起的.请求出 园子里总共有多少水洼? *限制条件N, M ≤ 100 样例:输入 N=10, M=12园子如下图 ( ...
- <<算法很美>>——(七)——DFS典题(二):数独游戏
目录 问题描述 问题分析 放码过来: 问题描述 如[图1.png],玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一 行.每一列.每一个同色九宫内的数字均含1-9,不重复. 数 ...
- 【DFS练习】水洼数
问题描述: 水洼数目有一个大小为N * M的院子,雨后积起了水, 八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼 限制条件 N, M <=100 测试集在代码后面 总体思路: 一个 ...
- C语言水洼数算法,C++ 数据结构之水洼的数量算法
C++ 数据结构之水洼的数量算法 题目: 有一个大小为N*M的园子, 雨后起了积水. 八连通的积水被认为是连接在一起的. 请求出园子里总共有多少水洼. 使用深度优先搜索(DFS), 在某一处水洼, 从 ...
- C语言水洼数算法,水洼的数量算法 代码(C)
题目: 有一个大小为N*M的园子, 雨后起了积水. 八连通的积水被认为是连接在一起的. 请求出园子里总共有多少水洼. 使用深度优先搜索(DFS), 在某一处水洼, 从8个方向查找, 直到找到所有连通的 ...
- 水洼数(Java)(dfs)
题解: import java.util.Scanner;public class Practice_水洼数 {static Scanner in = new Scanner(System.in);s ...
- 算法学习 (门徒计划)3-3 深搜(DFS)与广搜(BFS)及经典问题 学习笔记
算法学习 (门徒计划)3-3 深搜(DFS)与广搜(BFS)及经典问题 学习笔记 前言 深搜与广搜 搜索的核心概念 问题求解树 搜索剪枝和优化 问题求解树的状态 对比深搜与广搜 DFS-深度(deep ...
- 深度搜索—-深度搜索解决矩阵搜索问题(水洼数计算)
深度搜索--深度搜索解决矩阵搜索问题(水洼数计算) 一.题目 有一个大小为N*M的园子,雨后积起了水.八连通的计税被认为是连接在一起的.请求出园子里总共有多少水洼? (八连通指的是下图中相对w的*的部 ...
最新文章
- win10安装JDK cmd中可以运行java,但不能用javac,解决方案
- paramiko基础
- Vallog可以识别的错误及错误提示
- linux关于mysql_Linux关于MySQL的常用操作
- 12月9日 perform使用入门
- 项目启动及需求分析(靳嘉豪、胡新宇、李晨曦、杨航、李瑶)团队作业
- maven 引入外部jar包的几种方式
- 离京2小时,快手百亿入云,一切为了「看见」
- tomcat 7 无法打开管理页面
- SQL Server2005下载地址
- 我的五年百度博客文章列表
- Android Srt和Ass字幕解析器
- win10环境下安装AutoCAD2006+南方CASS7.1 【家庭中文版和非家庭中文版】
- 基于PHP的班级分数量化管理系统
- 亚马逊云的服务器(EC2)+阿里云的域名,添加ssl证书
- Cell | 共生菌群通过γδ T细胞促进肺癌的发展
- golang_iota
- Traefik v2.9-IngressRoute
- 华硕笔记本触控板有linux驱动吗,华硕笔记本怎么下载触控板驱动
- Linux下NFS服务器的配置 (二)
热门文章
- Eclipse: The superclass “jakarta.servlet.http.HttpServlet“ was not found on the Java Build Path
- AirServer一款强大的无线投屏软件 适用于多种应用场景
- 用shtml来include网页文件(开启SSI)
- OpenCV + Eclipse CDT + MinGW超爽使用体验以及常见问题合辑
- 应用数学课堂笔记(一)——欧拉方程
- 设计模式之外观模式详解(附应用举例实现)
- 管道日了狗-while read line大坑
- 抽屉原理(鸽巢原理)
- 爆破试验时的压力曲线
- Java中的throws关键字