深度优先解决水洼问题


有一个大小为 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相关推荐

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

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

  2. 水洼数目(dfs万能模板)

    水洼数目(dfs万能模板) /* 有一个大小为 N×M 的园子,雨后积起了水.八连通的积水被认为是连接在一起的. 请求出 园子里总共有多少水洼?(八连通指的是下图中相对 W 的*的部分) W 限制条件 ...

  3. 水洼数dfs(java)

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

  4. 水洼数(Java)(dfs)

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

  5. 【C++】利用DFS求解水洼数目问题

    题目描述 有一个大小为N x M的园子,雨后积了很多水. 八连通的积水被认为是连接在一起的.(八连通指的是下图中相对.的W部分) 请求出园子里总共有多少个水洼? 八连通的水洼如下所示: W W W W ...

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

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

  7. 【DFS 水洼数目】

    DFS 水洼数目 题目描述 代码 题目描述 题目: 有一个大小为 N*M 的园子,雨后积起了水.八连通的积水被认为是连接在一起的.请求出 园子里总共有多少水洼?(八连通指的是下图中相对 W 的.的部分 ...

  8. 【DFS练习】水洼数

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

  9. 算法很美:水洼数(dfs)深搜

    题目描述 Descriptions: 由于近日阴雨连天,约翰的农场中中积水汇聚成一个个不同的池塘,农场可以用 N x M (1 <= N <= 100; 1 <= M <= 1 ...

最新文章

  1. DCN-cs6200 ospf v2配置
  2. 2013年新疆中小学教师计算机水平考试机试题(复习版),2013年新疆中小学教师计算机水平考试笔试题(复习版8套含答案)...
  3. Atomic Integer 原理分析-getAndAddInt
  4. Price determination entry point - how is 4.85 calculated
  5. mysql添加外键约束失败cannot add foreign key constraint
  6. RT-Thread 学习笔记(四)——添加RTGUI组件
  7. sql数据库自动增量备份_SQL自动增量
  8. 贪吃蛇游戏C语言源代码学习
  9. 15.Linux/Unix 系统编程手册(上) -- 文件属性
  10. ECharts数据可视化:入门、实战与进阶干货
  11. 测试用例的设计方法:等价类划分法
  12. Android设备上px(像素)、dpi(像素密度)、dip(密度无关像素)之间的关系
  13. 苹果手机在微信里自带计算机功能,苹果版微信又更新,这些功能全是我想要的!...
  14. 大数据分析数据挖掘工具有哪些
  15. 计算机房的正常温度和湿度,各类机房的温湿度标准参考
  16. CSP应用开发-CryptAPI函数库介绍
  17. 【报错记录】阿里云OSS搭建图床 访问报错
  18. Numpy提取多维数组的某行/列
  19. NUL与NULL的区别
  20. 开题报告:基于java电影院选座售票系统 毕业设计论文开题报告模板

热门文章

  1. 【强化学习】Sarsa算法求解悬崖行走问题 + Python代码实战
  2. CTF基础知识与web信息泄露下的目录遍历、PHPINFO、备份文件下载
  3. (金融入门知识点)Double类型丢失精度
  4. 华科计算机学院专业课,华科计算机考研专业课有哪些
  5. Android Studio官方文档之添加URL和App索引支持
  6. 保姆级教程:python读取并绘制nc数据
  7. 商业插画是什么?怎么学习商业插画?
  8. javax.faces.webapp.FacesServlet
  9. opencv训练自己的模型,实现特定物体的识别
  10. 2011考研数学二第(6)题——积分大小关系比较