首页 > 编程语言 >(算法)Lake Counting <Flood Fill 洪水灌溉模型>

(算法)Lake Counting <Flood Fill 洪水灌溉模型>

时间:2024-03-30 23:30:57浏览次数:28  
标签:count arr int ++ dfs Lake Flood 110 Counting

题目:

题解:

#include<stdio.h>
int n, m;
char arr[110][110];    //元数据数组
int count = 0;    //计数器
int dx[8] = {1,1,1,-1,-1,-1,0,0};
int dy[8] = {-1,0,1,-1,0,1,1,-1};
int t[110][110];    //判断是否被选择
void dfs(int x, int y)
{
    for (int i = 0; i < 8; i++)
    {
        int a = x + dx[i], b = y + dy[i];
        if (a<0 || a>n || b<0 || b>m || t[a][b] || arr[a][b] != 'W')
        {
            continue;
        }
        t[a][b] = 1;
        dfs(a,b);
    }
}
int main()
{
    scanf("%d %d", &n, &m);
    for (int i = 0; i < n; i++)
    {
        scanf("%s", arr[i]);
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (arr[i][j] == 'W'&&t[i][j]==0)    //寻找符合条件且未被选择的空间
            {
                dfs(i, j);
                count++;
            }
        }
    }
    printf("%d", count);
    return 0;
}

 

标签:count,arr,int,++,dfs,Lake,Flood,110,Counting
From: https://blog.csdn.net/2301_79580018/article/details/137182056

相关文章

  • 十四 687. 扫雷 (Flood Fill)
    687.扫雷(FloodFill)思路:首先处理读取的网格str数组为g数组,若为地雷,则对应位置为-1,否则对应位置为以当前位置作为中心九宫格内地雷数量。然后遍历新数组g,若为0,则点击次数加一,再使用DFS处理当前位置即周围九宫格,若也为0继续DFS,所有搜索过的位置都标记为-1,最后再遍历一遍数组g......
  • 蓝桥杯算法集训 - Week 4:BFS、并查集、Flood Fill、哈希、单调栈/队列
    蓝桥杯算法集训-Week4本系列随笔用于整理AcWing题单——《蓝桥杯集训·每日一题2024》的系列题型及其对应的算法模板。一、BFSBFS算法复习参考:BFS(Java)广度优先搜索简单介绍、模板、案例(一)Ⅰ、代码模板staticvoidbfs(Troot){//双端队列,用来存储元素D......
  • Counting Rhyme
    这道题目就是因为对数论容斥不熟悉导致的。。。之前也做到过看这篇题解首先这篇题解用到了一个很大的纲领:公约数是最大公约数的约数然后看下\(g_k\)怎么求:由于\(g_k\)表示的是\(k|gcd(a_i,a_j)\)的对数,相当于\(k\)是\(a_i,a_j\)的公约数,所以我们把数组中\(k\)的倍数全部标出来,......
  • Snowflake 分布式id生成器--生成唯一ID
    在Snowflake算法中,通常包含以下几个部分来构造一个唯一的ID:时间戳(Timestamp):占据了64位ID中的高41位,用来表示生成ID的时间。通过时间戳的递增,保证了生成的ID是递增且唯一的。数据中心ID(DataCenterID):用于标识不同的数据中心,通常占据了5位。机器ID(Worker......
  • CodeForces 1943D2 Counting Is Fun (Hard Version)
    洛谷传送门CF传送门被自己的赛时智障操作气笑了。谁告诉你容斥钦定了几个要记到状态里面的。。。/tuu显然先找“好数组”的充要条件。对原数组\(a\)差分,设\(b_i=a_i-a_{i-1}\)。那么一次可以选择一对\((i,j)\)满足\(i\lej-2\),然后给\(b_i\)减\(1\),给\(b_......
  • snowflake算法时钟回拨问题: 基于逻辑时钟解决方案
    snowflake算法时钟回拨问题:基于逻辑时钟解决方案问题时间的生成完全依赖于本地时钟,在开启NTP协议的情况下,可能出现时钟回拨现象,此时服务不可用为了防止ID被顺序破解,通常自增值不会递增1,可以更加随机的添加递增值解决方案我们需要知道,时钟回拨问题是一个对......
  • snowflake算法时钟回拨问题: 基于逻辑时钟解决方案
    snowflake算法时钟回拨问题:基于逻辑时钟解决方案问题时间的生成完全依赖于本地时钟,在开启NTP协议的情况下,可能出现时钟回拨现象,此时服务不可用为了防止ID被顺序破解,通常自增值不会递增1,可以更加随机的添加递增值解决方案我们需要知道,时钟回拨问题是一个对......
  • snowflake算法时钟回拨问题: 基于逻辑时钟解决方案
    snowflake算法时钟回拨问题:基于逻辑时钟解决方案问题时间的生成完全依赖于本地时钟,在开启NTP协议的情况下,可能出现时钟回拨现象,此时服务不可用为了防止ID被顺序破解,通常自增值不会递增1,可以更加随机的添加递增值解决方案我们需要知道,时钟回拨问题是一个对......
  • Intel Lunar Lake失去超线程!但多核性能飙升1.5倍
    Intel将在今年晚些时候推出ArrowLake、LunarLake两套平台,工艺、架构基本相同,分别面向高性能和低功耗,一个意外变化就是不支持超线程。尽管如此,大家也不必为多核性能担忧。据最新曝料,17W功耗的LunarLake对比15W功耗的MeteorLake-U,CineBench23/5.4.5测试中,多核性能可提升几乎......
  • CF1857G Counting Graphs 题解
    题目描述给定一棵最小生成树,求有多少张图的最小生成树是给定的树,并且这张图的所有边边权不超过\(S\)。思路考虑在最小生成树中加边。我们回顾一下Kruskal的过程:找到没被用过的,最小的边判断这条边的两端是否在一个联通块中加入这条边,将两端的联通块连在一起根据第三条......