洛谷P1596湖的统计(小改)

题解-Lake Counting Problem : Lake Counting Description Due to recent rains, water has pooled in various places in Farmer John’s field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <= 1... 阅读详情

题目描述:
由于近期的降雨,雨水汇集在农民约翰的田地不同的地方。我们用一个NxM(1<=N<=100;1<=M<=100)网格图表示。每个网格中有水('W') 或是旱地('.')。一个网格与其周围的八个网格相连,而一组相连的网格视为一个水坑。约翰想弄清楚他的田地已经形成了多少水坑。给出约翰田地的示意图,确定当中有多少水坑。

输入格式:
第1行:两个空格隔开的整数:N 和 M 第2行到第N+1行:每行M个字符,每个字符是'W'或'.',它们表示网格图中的一排。字符之间没有空格。

输出格式:
一行:水坑的数量

输入输出样例
输入 #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.
输出 #1


代码思路:

       找有‘W’的地方,然后上下左右八个方向搜索,搜到无路可走,返回主程序,湖的数目加一。

#include<bits/stdc++.h> 
using namespace std;
char str[102][102];//保存数据的二维字符数组
bool vis[105][105];
int N,M,ans=0;
int dir[8][2]={{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1},{1,0},{1,1}};
// 八个方位    右方   右上   上方    左上    左方    左下    下方   右下 
void dfs(int a,int b)
{
    //递归的出口:当搜完所有从该位置的‘W’,其自动返回。
    str[a][b]='.';//标记当前的位置为‘.’,防止以后再次搜索
    for(int m=0; m<8; m++)//方向的遍历
    {
        int x=dir[m][0]+a;
        int y=dir[m][1]+b;
        if(x>=1&&x<=N  &&  y>=1&&y<=M  &&  str[x][y]=='W' && !vis[x][y])//判断当前位置是否出界,且下一个位置符合搜索条件
        { 
            vis[x][y]=true;
            dfs(x,y);
            //vis[x][y]=false;这里不用回溯,因为已经将原来的数据标记为‘.’了。当然回溯也是可以的。
       }  
    }
    return ;
}
int main()
{ 
    /*数据的输入*/
    cin>>N>>M;
    for(int i=1; i<=N; i++ )
    {
        for(int j=1; j<=M; j++)
        {
            cin>>str[i][j];
        }
    }
    /*数据的处理*/
    for(int i=1; i<=N; i++ )
    {
        for(int j=1; j<=M; j++)
        {
            if(str[i][j]=='W')//寻找有‘W’的地方然后开始搜索
            {
               dfs(i,j);//i,j为当前位置的横纵坐标
               ans++;//当以当前位置的连通块搜索完毕湖的数量加一
            } 
        }
    } 
   //数据的输出
    cout<<ans;
    return 0;
}
当然还有另一种形式 :就是不需要标记,只改变数据。

void dfs(int a,int b)
{
    str[a][b]='.';
    for(int m=0; m<8; m++)
    {
        int x=dir[m][0]+a;
        int y=dir[m][1]+b;
        if(x>=1&&x<=N  &&  y>=1&&y<=M  &&  str[x][y]=='W')
        { 
            //vis[x][y]=true;
            //str[x][y]=='.';
            dfs(x,y);
            //vis[x][y]=false;
       }  
    }
    return ;
}
 
————————————————

信奥赛CSP-J复赛集训(bfs专题)(4):[USACO10OCT] Lake Counting S 信奥赛CSP-J复赛集训(bfs专题-刷题题单及题解)(4):[USACO10OCT] Lake Counting S 阅读详情

相关推荐

半导体AMHS天车振动控制:从0.5G到超低振动的技术演进与工程实战

在先进晶圆厂中,自动化物料搬运系统(AMHS)的天车如同空中出租车,承担着晶圆盒(FOUP)在洁净室各工艺区间的转运任务。然而,当天车加减速、过弯或抓取时产生的机械振动通过轨道梁和建筑结构传递至光刻机等敏感设备,便可能直接威胁套刻精度与良率。传统被动减振方案依靠橡胶垫和弹簧,在0.5G指标时代曾行之有效,但在EUV光刻和先进制程面前已力不从心。主动振动控制技术通过传感器、控制器与作动器构成的闭环系统,在轨道吊点和机械手端实时输出反向力抵消振动,配合磁悬浮走行、轻量化结构及调度系统的路径优化,将振动从0.5G

weixin_29188043的博客 342

Luogu P1596 [USACO10OCT]湖计数Lake Counting

题目描述 Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <= 100) squares. Each square ...

629

LangChain Message 官方文档

消息是聊天模型中的基本通信单位。它们用于表示聊天模型的输入和输出,以及与对话相关的其他上下文或元数据。每条消息都包含一个角色(如“用户”、“助手”)和内容(如文本或多模态数据),并可能包含根据不同聊天模型提供商而有所不同的附加元数据。LangChain 提供了一个统一的消息格式,可以跨不同聊天模型使用,简化用户在不同模型之间切换时所需关注的消息格式差异。

AI Agent 首席体验官 896

2386:Lake Counting:为社么是判断联通块?dfs+bfs

题目大意 题目链接 由于近期的降雨,雨水汇集在农民约翰的田地不同的地方。我们用一个NxM(1<=N<=100;1<=M<=100)网格图表示。每个网格中有水(‘W’) 或是旱地(’.’)。一个网格与其周围的八个网格相连,而一组相连的网格视为一个水坑。约翰想弄清楚他的田地已经形成了多少水坑。给出约翰田地的示意图,确定当中有多少水坑。 思路分析 注意一个水坑的八个方向如果有水坑...

csyifanZhang的博客 253

告别F5失灵!手把手教你为Cursor配置.Net Core控制台项目专属调试环境

本文详细指导如何在Cursor编辑器中为.Net Core控制台项目配置专属调试环境,解决F5失灵等常见问题。从调试器选择到launch.json配置,再到高级调试技巧,帮助开发者高效搭建完整的调试工具链,提升开发效率。

weixin_28834765的博客 285

DenseNet训练实践

在Cifar10上训练DenseNet,复现DenseNet论文的结果是后面两篇分析工作的基础,因此本系列的第一篇,将首先讨论深度学习的训练过程中的几个方面: 1. 数据集 1.1 Cifar10数据集 Cifar10数据集有6万张32X32的图片,是一个小型的数据集,但数据的复杂度足够,下图来自DenseNet论文,可以看出,不用数据增强的话,ResNet的正确率也很难超过90%,因而足以用来验...

一蓑烟雨任平生 1万+

洛谷 P1596 湖的统计 dfs 回溯

题目描述 由于近期的降雨,雨水汇集在农民约翰的田地不同的地方。我们用一个NxM(1<=N<=100;1<=M<=100)网格图表示。每个网格中有水('W') 或是旱地('.')。一个网格与其周围的八个网格相连,而一组相连的网格视为一个水坑。约翰想弄清楚他的田地已经形成了多少水坑。给出约翰田地的示意图,确定当中有多少水坑。 输入格式 第1行:两个空格隔开的整...

惜朝歌的博客 808

Airtest进阶使用篇-提高脚本稳定性+批量运行脚本

Airtest进阶篇,主要分享如何提高脚本稳定性+如何批量运行脚本生成测试报告!

程序员小杨哥的博客 2569

P1216 Lake Counting S

由于近期的降雨,雨水汇集在农民约翰的田地不同的地方。我们用一个 N * M(1

mjjmike的博客 224

PTP(确时间协议,Precision Time Protocol)时间同步

主时钟定期发送带预估发送时间 t1 的报文(若支持硬件时间戳,实际 t1​ 由后续的Follow_Up报文携带)。所有设备启动后通过协商选举出唯一主时钟(Grandmaster),其余设备自动成为从时钟(Slave)。:从时钟记录接收时间 t2,随后向主时钟发送Delay_Req并记录发送时间 t3​。若使用支持PTP的交换机,可修正报文在交换机内的驻留时间,进一步提升精度。从时钟根据offset调整本地时钟,实现与主时钟同步。动态调整本地时钟,抵消传输延迟和时钟漂移。(或通过BMCA自动当选)。

努力努力努力 1303

YOLOv8的特征蒸馏代码应用讲解(CWD/MGD/mimic/在线蒸馏/逻辑蒸馏)

基于YOLOv8的逻辑蒸馏、特征蒸馏、在线蒸馏等方法代码介绍。

qq_41920323的博客 2582

数池塘

题目描述     农夫约翰的农场可以表示成 N*M(1&lt;=N&lt;=100,1&lt;=M&lt;=100)个方格组成的矩形。由于近日的降雨,在约翰农场上的不同地方形成了池塘。每一个方格或者有积水('W')或者没有积水('.')。农夫约翰打算数出他的农场上共形成了多少池塘。一个池塘是一系列相连的有积水的方格,每一个方格周围的八个方格都被认为是与这个方格相连的。     现给出约翰农场的图样...

Stupid_Computer的博客 1215

基于STM32的智能婴儿床设计(蓝牙通信+摄像头监控)_315

本项目设计并实现了一款基于STM32微控制器的智能婴儿床系统,通过多种传感器和智能控制模块为家长提供更便捷和高效的婴儿照护解决方案。系统包括婴儿哭泣检测、湿度监测、空气质量检测、温度监控等多项功能,并通过蓝牙与手机APP进行数据传输和远程控制。婴儿床内置摇摇床和安抚音乐播放功能,能够在婴儿哭泣时自动启动摇摇床并播放安抚音乐。此外,系统还支持摄像头远程监控,让家长实时查看婴儿的状态。整个系统采用STM32F103RCT6作为核心控制单元,结合声音传感器、湿度传感器、MQ135空气质量传感器。

864

Lake Counting S(洛谷)c的深度搜索

由于近期的降雨,雨水汇集在农民约翰的田地不同的地方。我们用一个 N\times M(1\times N\times 100, 1\leq M\leq 100)N×M(1×N×100,1≤M≤100) 的网格图表示。每个网格中有水(W) 或是旱地(.)。一个网格与其周围的八个网格相连,而一组相连的网格视为一个水坑。约翰想弄清楚他的田地已经形成了多少水坑。给出约翰田地的示意图,确定当中有多少水坑。...

m0_69344097的博客 314

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Lake Counting【DFS】练习

Lake Counting 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述: 由于最近的降雨,农民约翰的田地里的水聚集在不同的地方,用一个n×m(1≤n≤100;1 <= m <= 100)平方。每个正方形包含水( ‘ w ’ )或旱地( ‘ . ’ ))。农民约翰想知道他的地里已经形成了多少池塘。池塘是一组相连的正方形,里面有水,其中一个正方形被认为...

qq_43514659的博客 696

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【模拟】洛谷题目记录

我只能按照它应有的过程,胡乱模拟一通罢。

2302_81103640的博客 1574

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

洛谷 P1605 (Java实现),请问为什么错了?

给定一个N×M方格的迷宫,迷宫里有T处障碍,障碍处不可通过。在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。给定起点坐标和终点坐标,每个方格最多经过一次,问有多少种从起点坐标到终点坐标的方案。...

MortonD的博客 360

迷宫问题(八方向)c++

系列文章目录 文章目录系列文章目录前言一、题目描述二、c++代码1.使用栈2.递归总结 前言 八个方向的迷宫问题 一、题目描述 给定一个迷宫,左上角为入口,右下角为出口,求出行走路径。 一共八个方向:东、南、西、北、东北、东南、西北、西南,分别记为E S W N NE SE NW SW。 m*n的迷宫: 0 1 1 1 0 1 1 1 1 0 1 0 1 0 1 0 0 1 0 0 1 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 0 0 1 1 0 入口为左上角,

qq_30147803的博客 5202

ACM题目:连阴雨

ACM题目:连阴雨 要求 时限:1000ms 内存限制:10000K 总时限:3000ms 描述 因为连续的降雨,我们学校操场上出现了许多水坑,现在需要统计一共有多少个水坑。 题目输入为一个N譓 (1 &lt;= N &lt;= 100; 1 &lt;= M &lt;= 100)的图,(‘W’) 代表积水,(‘.’)代表干燥。 一处积水我们认为和它周围的八个方向相邻,相邻的积水构...

wangxin1248的博客 899

洛谷题目P1123——取数游戏

这道题目还是洛谷网站里的,题号为:P1123。感谢洛谷网站,也感谢大家的支持

asuf1364的博客 1046

1605 迷宫

难度:普及- 题目类型:深搜 提交次数:1 涉及知识:深搜 题目背景 迷宫 【问题描述】 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过。给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案。在迷宫 中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。 输入样例 输出样例 【数据规模】 1≤N,M≤5 题目...

weixin_30376509的博客 579

2021年暑期训练阶段二Day2

目录 A - Lake Counting B - Binary Search C - Fire! D - Find a way E - Power Calculus F - Find The Multiple G - 棋盘问题 A - Lake Counting 题意: 由于最近的降雨,水在农民约翰的田地里的各个地方汇集起来,用一个N x M(1<=N<=100;1<=M<=100)平方米。每个广场包含水(“W”)或旱地(“W”)。农夫约翰想知道他的田地里形成了.

m0_46596968的博客 569

洛谷P1596 [USACO10OCT]湖计数Lake Counting

由于近期的降雨,雨水汇集在农民约翰的田地不同的地方。我们用一个NxM(1<=N<=100;1<=M<=100)网格图表示。每个网格中有水(‘W’) 或是旱地(’.’)。一个网格与其周围的八个网格相连,而一组相连的网格视为一个水坑。约翰想弄清楚他的田地已经形成了多少水坑。给出约翰田地的示意图,确定当中有多少水坑。 输入格式: 第1行:两个空格隔开的整数:N 和 M 第2行到第...

qq_52051345的博客 894

水洼数目

题目描述 Due to recent rains, water has pooled in various places in Farmer John’s field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <= 100) squares. Each square contains either water (‘W’) or dry land (’.’). Farmer John wou

q1430186623的博客 406

dfs-Lake Counting S

由于近期的降雨,雨水汇集在农民约翰的田地不同的地方。我们用一个NxM(1<=N<=100;1<=M<=100)网格图表示。每个网格中有水(‘W’) 或是旱地(’.’)。一个网格与其周围的八个网格相连,而一组相连的网格视为一个水坑。约翰想弄清楚他的田地已经形成了多少水坑。给出约翰田地的示意图,确定当中有多少水坑。 输入格式 第1行:两个空格隔开的整数:N 和 M 第2行到第N+1行:每行M个字符,每个字符是’W’或’.’,它们表示网格图中的一排。字符之间没有空格。 输出格式 一行:水坑

weixin_52045928的博客 187

ACM暑假集训总结4

南昌理工ACM2020暑假集训总结4 DFS基础入门和模板 一、dfs的简要说明 (1):深度优先搜索(Depth-First-Search)是搜索算法的一种。是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于盲目搜索。dfs这里插入图片描述 (2):DFS是图论里面的一种

qq_46795622的博客 414
上一篇: 洛谷P1101单词方阵(小改了一下)
下一篇: 洛谷P1135奇怪的电梯dfs(有改动)//不要点进来,此代码未经优化,请看另一个
simba_2011
博客等级 码龄3年 239粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值