数池塘(四方向,八方向)深搜

题面

题目描述
农夫约翰的农场可以表示成 N×M个方格组成的矩形。由于近日的降雨,在约翰农场上的不同地方形成了池塘。每一个方格或者有积水(W)或者没有积水(.)。
农夫约翰打算数出他的农场上共形成了多少池塘。一个池塘是一系列相连的有积水的方格,每一个方格周围的四个方格都被认为是与这个方格相连的。现给出约翰农场的图样,要求输出农场上的池塘数。
输入
第 11 行:由空格隔开的两个整数N 和 M;
第 2…N+1 行:每行 M 个字符代表约翰农场的一排方格的状态。每个字符或者是 W 或者是 .,字符之间没有空格。
数据范围
1≤N,M≤100。
输出
输出只有1行,输出约翰农场上的池塘数。

样例

输入

10 12
W........WW.
.WWW.....WWW
....WW...WW.
.........WW.
.........W..
..W......W..
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.

输出

13

链接:Link.

 主要思路就是碰到一处水就把与这潭水相连着的池塘“抽干”

代码

#include <bits/stdc++.h>
using namespace std;
char p[110][110];
int mx[5] = {0 , 0 , 1 , 0 , -1};
int my[5] = {0 , 1 , 0 , -1 , 0};
int n , m , cnt=0;
void dfs(int x , int y){p[x][y] = '.';int tx , ty;for ( int i = 1 ; i <= 4 ; i++ ){tx = x + mx[i];ty = y + my[i];if(p[tx][ty] == 'W') dfs(tx,ty);}
}
int main(){scanf("%d%d" , &n , &m);for ( int i = 1 ; i <= n ; i++ )for ( int j = 1 ; j <= m ; j++ )cin >> p[i][j];for ( int i = 1 ; i <= n ; i++ )for ( int j = 1 ; j <= m ; j++ )if(p[i][j] == 'W'){cnt++;dfs(i , j);}printf("%d" , cnt);return 0;
}

还有个数池塘(八方向)的,其实就是把方向数组改改就行了

代码

#include <bits/stdc++.h>
using namespace std;
int fx[9] = {0,0,1,1,1,0,-1,-1,-1};
int fy[9] = {0,1,1,0,-1,-1,-1,0,1};
int n , m , cnt=0;
char a[110][110];
void dfs(int x , int y){a[x][y] = '.';int tx , ty;for ( int i = 1 ; i <= 8 ; i++ ){tx = x + fx[i];ty = y + fy[i];if(a[tx][ty] == 'W')dfs(tx , ty);}
}
int main(){scanf("%d%d" , &n , &m);for ( int i = 1 ; i <= n ; i++ )for ( int j = 1 ; j <= m ; j++ )cin >> a[i][j];for ( int i = 1 ; i <= n ; i++ )for ( int j = 1 ; j <= m ; j++ )if(a[i][j] == 'W'){cnt++;dfs(i,j);}printf("%d" , cnt);return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/26892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

商用服务机器人公司【Richtech Robotics】申请纳斯达克IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于美国内华达州拉斯维加斯由华人领导的商用服务机器人公司【Richtech Robotics】近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纳斯达克IPO上市&am…

Linux的shell脚本常用命令

1、前提 使用shell脚本可以将所要执行的命令行进行汇总&#xff0c;统一执行&#xff0c;制作为脚本工具&#xff0c;简化重复性工作 1.1、常用命令 1.1.1、启动命令 假设我们拥有一个halloWord.sh的脚本&#xff0c;通过cd 命令进入相对应的目录下 ./halloWord.sh1.1.2、…

SpringBoot 依赖管理和自动配置---带你了解什么是版本仲裁

&#x1f600;前言 本篇博文是关于SpringBoot 依赖管理和自动配置&#xff0c;希望能够帮助到您&#x1f60a; &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您…

linux epoll介绍与代码演示

在Linux系统中,epoll和poll是两种I/O多路复用技术,它们可以让单个线程处理多个I/O事件。 poll是一种比较早的技术,它的工作方式是轮询所有的文件描述符,看哪些文件描述符准备好了I/O操作。这种方式的缺点是,当文件描述符的数量很大时,轮询的开销会很大。 epoll是为了解…

一个Python程序引发的思考

import disdef add(a, b):result a b 2 3return resultdis.dis(add)# dis.opname 是一个列表&#xff0c;它按字节码值的顺序列出了所有的操作名。 print(dis.opname)# dis.opmap 是一个字典&#xff0c;其键是操作名&#xff0c;值是对应的字节码值。 print(dis.opmap)# 列…

关于机器视觉应用开发四大软件薪资分析(华东)

&#xff08;QQ群有答疑&#xff09;视觉人机器视觉-海康机器视觉Visionmaster二次开发课程-零基础小白快速上手VM开发系列课程 现场市场总和占用率我们称作四大软件分别是 1.Visionmaster 2.Halcon 3.Visionpro 4.Opencv 如果大家要详细了解四大软件的应用以及详细情况&a…

Vue——webpack

webpack 一、Install1.全局安装2.局部安装 二、总结1.打包2.定义脚本3.配置文件定义&#xff08;webpack.config.js)4.项目重新加载依赖5.webpack打包Css6.style-loader 一、Install 1.全局安装 npm install webpack webpack-cli -g2.局部安装 以项目为单位&#xff0c;一个项…

python中的matplotlib画饼图(数据分析与可视化)

直接开始 1、先安装pandas和matplotlib pip install pandas pip install matplotlib2、然后在py文件中导入 import pandas as pd import matplotlib.pyplot as plt3、然后直接写代码 import pandas as pd import matplotlib.pyplot as pltpd.set_option("max_columns&…

2023牛客暑期多校训练营7-c-Beautiful Sequence

思路&#xff1a; &#xff0c;则有&#xff0c;也就是说只要知道A1就可以求任意A。由于A是升序排列&#xff0c;所以对于任意&#xff0c;二进制所包含1的最高位第k位来说&#xff0c;表明与第k位相反&#xff0c;要大一些&#xff0c;所以它的第k位为1&#xff0c;的第k位为…

c++使用条件变量实现生产消费问题(跨平台)

1. 生产者线程 思路&#xff1a;队列满了的情况下, 触发条件变量wait, 等待消费线程消费后唤醒继续生产. void ProducerThreadFunc() {while(1) { while(/* 容器已满 */) { /* 线程等待, 直到消费者消费后唤醒继续执行 */ }/* 生产动作 */ } }2. 消…

【Linux命令详解 | cp命令】Linux系统中用于复制文件或目录的命令

文章标题 简介参数列表二&#xff0c;使用介绍1. 复制单个文件2. 复制多个文件3. 复制目录4. 保留文件属性5. 创建链接6. 强制覆盖7. 显示复制进度8. 创建备份9. 只有当源文件比目标文件新时才复制10. 复制链接文件 总结 简介 cp命令在Linux系统中用于复制文件或目录。其功能强…

uniapp根据高度表格合并

没有发现比较友好的能够合并表格单元格插件就自己简单写了一个,暂时格式比较固定 一、效果如下 二、UI视图+逻辑代码 <template><view><uni-card :is-shadow="false" is-full

出现Error: Cannot find module ‘compression-webpack-plugin‘错误

错误&#xff1a; 解决&#xff1a;npm install --save-dev compression-webpack-plugin1.1.12 版本问题

nginx+flask+uwsgi部署遇到的坑

文章目录 1.环境&#xff1a;2.uwsgi_conf.ini具体配置内容3.nginx 具体配置4.具体命令(注意使用pip3命令安装)5.服务异常排查 1.环境&#xff1a; centos8 uWSGI 2.0.22 gmssl 3.2.2 nginx version: nginx/1.18.0 项目目录&#xff1a; 2.uwsgi_conf.ini具体配置内容 [uws…

回归预测 | MATLAB实现POA-CNN-BiGRU鹈鹕算法优化卷积双向门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现POA-CNN-BiGRU鹈鹕算法优化卷积双向门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现POA-CNN-BiGRU鹈鹕算法优化卷积双向门控循环单元多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现POA-CNN-BiGRU鹈鹕…

USB采集卡如何打pts

一、使用采集卡提供的pts 二、手动打pts 1.usb采集设备pts的问题 2.采集卡驱动&#xff0c;UVC/UAC&#xff0c;ffmpeg的关系 3.如何自己打pts 4.音视频同步调优 5.NTP等联网调时工具带来的不同步问题 一、使用采集卡提供的pts 我们用使用pc摄像头和使用pc麦克风声卡里的方法&…

Butterfly 安装文档(一) 快速开始

安装 在你的Hexo根目录里面 git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly 应用主题 修改 Hexo 根目录下的 _config.yml&#xff0c;把主题改为 butterfly theme: butterfly 安装插件 如果你没有 pug 以及 stylus 的渲染…

阻抗是什么?什么时候要考虑阻抗匹配?

在电路设计中&#xff0c;我们常常碰到跟阻抗有关的问题&#xff0c;那么到底什么是阻抗&#xff1f; 在具有电阻、电感和电容的电路里&#xff0c;对电路中电流所起的阻碍作用叫做阻抗。常用Z来表示&#xff0c;它的值由交流电的频率、电阻R、电感L、电容C相互作用来决定。由…

vue3学习-Pinia状态管理

Pinia 定义一个Store import { defineStore } from pinia export const useStore defineStore(main, {})这个 name&#xff0c;也称为 id&#xff0c;是必要的&#xff0c;Pinia 使用它来将 store 连接到 devtools。 将返回的函数命名为 use… 是跨可组合项的约定&#xff0…

RocketMQ使用

RocketMQ角色 RocketMQ的基本概念 同步发送消息 /*** author* create 2023-04-08 17:24* 发送同步消息* 适用于重要的消息 例如消息通知&#xff0c;短信通知*/ public class SyncProducer {public static void main(String[] args) throws Exception {String topic"…