Java 水洼问题 dfs
深度优先解决水洼问题
有一个大小为 NM 的园子,雨后积起了水。八连通的积水被认为是连接在一起的。请求出园子里总共有多少水洼?(八连通指的是下图中相对 W 的的部分)
***
*W*
***
限制条件:N, M ≤ 100
样例输入:
10 12
W........WW.
.WWW.....WWW
....WW...WW.
.........WW.
.........W..
..W......W..
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.
这个问题解决,通过一个点判断是不是W,如果是那么就走8个角的点进行一步一步的判断,避免重复判断,把走过的并且是W的点变成"."就可以避免了。
上代码
import java.util.Scanner;/*** @Author Robin Wang* @Date 2020/3/9 19:22*/
public class 水洼问题 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();char a[][] = new char[n][];for (int i = 0; i < n; i++) {a[i] = sc.next().toCharArray();}int sum = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if(a[i][j]=='W'){dfs(a,i,j);sum++;}}}System.out.println(sum);}private static void dfs(char[][] a, int i, int j) {a[i][j] = '.';if(i > 0 && a[i-1][j]=='W') dfs(a,i-1,j);//向上if(i < a.length-1 && a[i+1][j]=='W') dfs(a,i+1,j);//向下if(j > 0 && a[i][j-1]=='W') dfs(a,i,j-1);//向左if(j < a[i].length-1 && a[i][j+1]=='W') dfs(a,i,j+1);//向右if(i>0&&j>0&&a[i-1][j-1]=='W') dfs(a,i-1,j-1);//左上if(i<a.length-1&&j>0&&a[i+1][j-1]=='W') dfs(a,i+1,j-1);//左下if(i>0&&j<a[i].length-1&&a[i-1][j+1]=='W') dfs(a,i-1,j+1);//右上if(i<a.length-1&&j<a[i].length-1&&a[i+1][j+1]=='W') dfs(a,i+1,j+1);//右下}
}
Java 水洼问题 dfs相关推荐
- 水洼数 DFS 蓝桥杯 java代码
水洼数 DFS 蓝桥杯 java代码 有一个大小为N * M的院子,雨后积起了水,八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼 限制条件 N, M <=100 10 12 W.. ...
- 水洼数目(dfs万能模板)
水洼数目(dfs万能模板) /* 有一个大小为 N×M 的园子,雨后积起了水.八连通的积水被认为是连接在一起的. 请求出 园子里总共有多少水洼?(八连通指的是下图中相对 W 的*的部分) W 限制条件 ...
- 水洼数dfs(java)
问题描述: 有一个大小为 N×M 的园子,雨后积起了水.八连通的积水被认为是连接在一起的.请求出 园子里总共有多少水洼? *限制条件N, M ≤ 100 样例:输入 N=10, M=12园子如下图 ( ...
- 水洼数(Java)(dfs)
题解: import java.util.Scanner;public class Practice_水洼数 {static Scanner in = new Scanner(System.in);s ...
- 【C++】利用DFS求解水洼数目问题
题目描述 有一个大小为N x M的园子,雨后积了很多水. 八连通的积水被认为是连接在一起的.(八连通指的是下图中相对.的W部分) 请求出园子里总共有多少个水洼? 八连通的水洼如下所示: W W W W ...
- <<算法很美>>——(七)——DFS典题(一):水洼数目
目录 问题描述 问题分析 放码过来 问题描述 有一个大小为N×MN×M N\times MN×M的园子,雨后积起了水.八连通的积水被认为是连接在一起的.请求出园子里总共有多少水洼?八连通指的是下图中相 ...
- 【DFS 水洼数目】
DFS 水洼数目 题目描述 代码 题目描述 题目: 有一个大小为 N*M 的园子,雨后积起了水.八连通的积水被认为是连接在一起的.请求出 园子里总共有多少水洼?(八连通指的是下图中相对 W 的.的部分 ...
- 【DFS练习】水洼数
问题描述: 水洼数目有一个大小为N * M的院子,雨后积起了水, 八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼 限制条件 N, M <=100 测试集在代码后面 总体思路: 一个 ...
- 算法很美:水洼数(dfs)深搜
题目描述 Descriptions: 由于近日阴雨连天,约翰的农场中中积水汇聚成一个个不同的池塘,农场可以用 N x M (1 <= N <= 100; 1 <= M <= 1 ...
最新文章
- DCN-cs6200 ospf v2配置
- 2013年新疆中小学教师计算机水平考试机试题(复习版),2013年新疆中小学教师计算机水平考试笔试题(复习版8套含答案)...
- Atomic Integer 原理分析-getAndAddInt
- Price determination entry point - how is 4.85 calculated
- mysql添加外键约束失败cannot add foreign key constraint
- RT-Thread 学习笔记(四)——添加RTGUI组件
- sql数据库自动增量备份_SQL自动增量
- 贪吃蛇游戏C语言源代码学习
- 15.Linux/Unix 系统编程手册(上) -- 文件属性
- ECharts数据可视化:入门、实战与进阶干货
- 测试用例的设计方法:等价类划分法
- Android设备上px(像素)、dpi(像素密度)、dip(密度无关像素)之间的关系
- 苹果手机在微信里自带计算机功能,苹果版微信又更新,这些功能全是我想要的!...
- 大数据分析数据挖掘工具有哪些
- 计算机房的正常温度和湿度,各类机房的温湿度标准参考
- CSP应用开发-CryptAPI函数库介绍
- 【报错记录】阿里云OSS搭建图床 访问报错
- Numpy提取多维数组的某行/列
- NUL与NULL的区别
- 开题报告:基于java电影院选座售票系统 毕业设计论文开题报告模板
热门文章
- 【强化学习】Sarsa算法求解悬崖行走问题 + Python代码实战
- CTF基础知识与web信息泄露下的目录遍历、PHPINFO、备份文件下载
- (金融入门知识点)Double类型丢失精度
- 华科计算机学院专业课,华科计算机考研专业课有哪些
- Android Studio官方文档之添加URL和App索引支持
- 保姆级教程:python读取并绘制nc数据
- 商业插画是什么?怎么学习商业插画?
- javax.faces.webapp.FacesServlet
- opencv训练自己的模型,实现特定物体的识别
- 2011考研数学二第(6)题——积分大小关系比较