问题描述:

有一个大小为 N×M 的园子,雨后积起了水。八连通的积水被认为是连接在一起的。请求出 园子里总共有多少水洼?
*限制条件N, M ≤ 100
样例:输入 N=10, M=12园子如下图
('W’表示积水, '.'表示没有积水)
W…WW.
.WWW…WWW
…WW…WW.
…WW.
…W…
…W…W…
.W.W…WW.
W.W.W…W.
.W.W…W.
…W…W.
输出 3

代码如下(具体看注释)

import java.util.Scanner;
public class Sw {//水洼数目public static void Swxc(char [][]a,int i,int j)//将水洼变为旱地,避免死循环{a[i][j]='.';//将水洼变为旱地//分别向八个方向dfs
//         if (j-1>=0&&a[i][j-1]=='W') Swxc(a,i,j-1);
//         if (i-1>=0&&a[i-1][j]=='W')Swxc(a,i-1,j);
//         if (j+1<=a[0].length-1&&a[i][j+1]=='W')Swxc(a,i,j+1);
//         if (i+1<=a.length-1&&a[i+1][j]=='W')Swxc(a,i+1,j);
//         if (j-1>=0&&i-1>=0&&a[i-1][j-1]=='W') Swxc(a,i-1,j-1);
//         if (j+1<=a[0].length-1&&i-1>=0&&a[i-1][j+1]=='W') Swxc(a,i-1,j+1);
//         if (j-1>=0&&i+1<=a.length-1&&a[i+1][j-1]=='W') Swxc(a,i+1,j-1);
//         if (j+1<=a[0].length-1&&i+1<=a.length-1&&a[i+1][j+1]=='W') Swxc(a,i+1,j+1);for (int s=-1;s<=1;s++)//简便方法八连通{for(int t=-1;t<=1;t++){if (s==0&&t==0) continue;if (i+s>=0&&i+s<=a.length-1&&j+t>=0&&j+t<=a[0].length-1)if (a[i+s][j+t]=='W')Swxc(a,i+s,j+t);}}}public static void main(String[] args) {Scanner a=new Scanner(System.in);//输入数据int count=0;//计数int b=a.nextInt();int c=a.nextInt();char [][]d=new char[b][c];for (int i=0;i<=b-1;i++)d[i]=a.nextLine().toCharArray();for (int i=0;i<=d.length-1;i++)//循环找到第一个水洼{for (int j = 0; j <= d[0].length - 1; j++) {if (d[i][j] == 'W'){Swxc(d, i, j);count++;//计数加一次,说明是一个水洼}}}System.out.println(count);}
}

水洼数dfs(java)相关推荐

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

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

  2. 水洼数(Java)(dfs)

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

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

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

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

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

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

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

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

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

  7. Java 水洼问题 dfs

    深度优先解决水洼问题 有一个大小为 NM 的园子,雨后积起了水.八连通的积水被认为是连接在一起的.请求出园子里总共有多少水洼?(八连通指的是下图中相对 W 的的部分) *** *W* *** 限制条件 ...

  8. 【DFS练习】水洼数

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

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

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

最新文章

  1. 闲鱼单体应用Serverless化拆分实践
  2. 真执着 卡巴斯基和Palo Alto找到了BlackEnergy和ExPetr的相似代码
  3. TensorFlow和深度学习-无需博士学位(TensorFlow and deep learning without a PhD)
  4. Word中标题、图表自动编号的方法
  5. Java的超类/基类Object
  6. Mac安装与配置idea及tomcat
  7. Linux下C++ Socket编程实例
  8. 吉利GKUI车机任意安装第三方APP软件教程,DNS劫持应用商店安装软件
  9. 黑群晖DSM7.1.0物理机安装教程
  10. 申请自己的免费企业邮箱
  11. APScheduler定时任务
  12. win10 +ubuntu20.04双系统安装:双硬盘+nvidia独立显卡
  13. react实战笔记172:navigate组件
  14. leetcode:数组:1467自矩形查询
  15. 用u盘制作u启动重装系统的步骤实现
  16. 【愚公系列】华为云系列之DevCloud+ECS+MySQL搭建超级冷笑话网站【开发者专属集市】
  17. 在Word里怎么设置每页不同的页眉
  18. 什么是防抖和节流?区别是什么?
  19. Excel表格中多个文本内容快速合并到一个单元格内
  20. WPA-Enterprise WPA2-Enterprise以及WPA-Personal WPA2-Personal

热门文章

  1. umi路由懒加载和权限验证(基于React)
  2. python爬虫爬取大学排名并存入数据库进行数据可视化
  3. go第三方日志库 Zap
  4. 致爱丽丝 之MY收藏
  5. 关闭和开启笔记本自带键盘。
  6. 【springcloud】Eureka 服务提供者 增加服务暴漏
  7. 百词斩和扇贝单词 背单词功能模块测试
  8. ActiveX 暴漏你所有信息的可怕的插件!
  9. 固态硬盘的坏块管理,你知道和不知道的
  10. 打造华丽QQ5.0侧滑效果