864. 二维数组区块计数

该博客讨论了如何计算二维数组中由1组成的区块数量。题目要求输入一个包含0和1的矩阵,其中相邻的1(上下左右或对角线)被视为一个区块,0不计入区块。给出的数据范围为0≤N,M,N∗M≤10^6。博主提供了一个使用广度优先搜索(BFS)并进行染色的方法来解决此问题,并给出了样例输入、输出和解释。代码实现也作为博客的一部分给出。" 107797493,8765336,软件测试策略详解:覆盖方法,"['软件测试', '测试策略', '编程语言', '数据库', '算法']
摘要由CSDN通过智能技术生成

864. 二维数组区块计数

输入一个只包含0和1的二维数组,上下左右和对角相邻的1组成一个区块,0不形成区块,求数组中的区块个数。

输入格式

第一行输入两个正整数N和M,N表示数组行数,M表示数组列数。

接下来N行,每行表示数组对应的一行,每行包含M个整数,整数之间用空格隔开。

输出格式

输出一个整数,表示数组中区块的个数。

数据范围

0≤N,M,N∗M≤1060≤N,M,N∗M≤106

输入样例:

3 3
0 1 0
1 0 0
1 0 1

输出样例:

2

样例解释

数组右下角的1单独构成一个区块,其他的3个1对角或上下相邻,构成另一个区块。

 

思路:

直接bfs,染色找。

代码:

#include <iostream>
#include <string>
#include <vector>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <map>
#include <queue>
using namespace std;
#define ll long long
const ll mod = 1e9 + 7;
const int INF = 0x3f3f3f3f;
const int maxn = 1e6+100;
in
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值