挑战程序设计竞赛——水洼计数

news/2024/7/20 21:11:00 标签: 蓝桥杯, 深度优先, c++

有一个大小为 N \times MN×M 的园子,雨后发生积水。八连通的积水被认为是连接在一起的。

请求出园子中有多少个水洼?

何为八连通

***
*W*
***

对于 W 来说,* 就是八个与它连通的点

输入

  • 第一行两个整数 N,M(1 \leq N,M \leq 100)N,M(1≤N,M≤100), 表示 NN 行 MM 列
  • 接下来有 NN 行,每行 MM 个字符,可能是 ., W. 表示地,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.

输出

3
#include<bits/stdc++.h>
using namespace std;

int N,M;
char m[1001][1001];

void dfs(int x,int y)
{
    m[x][y]='.';
    for(int dx=-1;dx<=1;dx++)
        for(int dy=-1;dy<=1;dy++)
        {
            if(m[x+dx][y+dy]=='W'&&(x+dx)>=0&&(y+dy)>=0)
            {
                dfs(x+dx,y+dy);
            }
        }
}

int main()
{
    cin>>N>>M;
    int count=0;
    for(int i=0;i<N;i++)
        for(int j=0;j<M;j++)
            cin>>m[i][j];
    for(int i=0;i<N;i++)
        for(int j=0;j<M;j++)
            if(m[i][j]=='W')
            {
                dfs(i,j);
                count++;
            }
    cout<<count<<endl;

}


http://www.niftyadmin.cn/n/764990.html

相关文章

VIM cscope nmap不能工作

cscope为*nix平台下的功能强大的本文搜索工具&#xff0c;其安装和使用说明可以很方便的找到&#xff0c;本文所描述的问题为:Ubuntu 14.04不能正常使用vimrc下配置的cscope nmap快捷键的问题。 操作系统版本:Ubuntu 14.04 vim: 版本 7.4.52 vim插件:cscope_maps.vim 将cs…

简论C-数组和指针

指针和数组 1.指针和数组定义、区别 1.1指针和数组定义 指针和数组都是C语言的精髓所在&#xff0c;对于很多C程序员来说&#xff0c;如果你问这样一个问题&#xff1a;数组和指针有什么区别&#xff1f;他们的答案很可能是&#xff1a;”数组和指针不是同一样东西吗&#…

PJLIB 内存池实现

PJLIB内存池 1.PJLIB内存池优势 1.1 不用于其他的内存池实现方式&#xff0c;PJLIB内存池允许申请不同大小的内存空间1.2 高效率的内存分配过程&#xff0c;内存分配算法复杂度为O(1),这都源于其内存分配实现简单(只需要少许指针的运算操作),而且不需要加锁.1.3 PJLIB POOL分配…

挑战程序设计——迷宫的最短路径

给定一个大小为 N \times MNM 的迷宫&#xff0c;由通道和墙壁组成。 每一步可以向相邻的上下左右四个方向移动。 请求出起点到终点的最小步数。本题保证从起点一定能走到终点。 # 表示墙壁&#xff0c;不可走。 . 表示通道&#xff0c;可走。S 表示起点。G 表示终点。 输入…

交叉编译tcpdump

## 编译平台 ##  PC:ubuntu-14.04  Cross-tool:arm-none-linux-gnueabi-gcc 4.8.3  Target:Atmel9260 ## 编译步骤 ## 在www.tcpdump.org网站下载tcpdupm和libpcap的源码&#xff0c;起初libpcap-1.7.4下载的是最新的版本&#xff0c;但是总是如下的编译问题: ./pca…

挑战程序设计——硬币问题 II

有 1,5,10,50,100,5001,5,10,50,100,500 元的硬币&#xff0c;分别为 C_1, C_5, C_{10}, C_{50}, C_{100}, C_{500}C1​,C5​,C10​,C50​,C100​,C500​ 个。现在使用这些硬币来支付 AA 元&#xff0c;最少需要多少个硬币&#xff1f;本题保证至少存在一种支付方案 输入 第一…