864. 二维数组区块计数
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;
int a[maxn];
bool vis[maxn];
int n, m;
int dx[8] = { 0,0,1,1,1,-1,-1,-1};
int dy[8] = { 1,-1,0,1,-1,0,-1,1};struct node
{int x, y;
};
void bfs(int x, int y) {node st;st.x = x;st.y = y;queue<node>Q;Q.push(st);while (!Q.empty()) {node u = Q.front();Q.pop();int id = u.x*m + u.y ;vis[id] = true;for (int i = 0;i < 8;++i) {int x = u.x + dx[i];int y = u.y + dy[i];int v_id = x*m + y;if (x >= 0 && x < n&&y >= 0 && y < m && 1 == a[v_id] && !vis[v_id]) {node v;v.x = x;v.y = y;Q.push(v);}}}
}
int main() {cin >> n >> m;for (int i = 0;i < n;++i) {for (int j = 0;j < m;++j) {scanf("%d",&a[i*m+j]); }}int ret = 0;for (int i = 0;i < n;++i) {for (int j = 0;j < m;++j) {int id = i*m + j;if (a[id] == 1 && !vis[id]) {ret++;bfs(i, j);}}}cout << ret << endl;return 0;
}
864. 二维数组区块计数相关推荐
- 【HDU】1251统计难题 (字典树:二维数组,结构体数组,链表,map)
使用二维数组或者结构体数组都可以,但是在计数的时候有一点点小区别 一.结构体数组 #include <cstdio> #include <cstring> #include & ...
- python读取文件中的数据为二维数组变量_Numpy 多维数据数组的实现
numpy包(模块)几乎总是用于Python中的数值计算.这个软件包为Python提供了高性能的向量.矩阵.张量数据类型.它是在C和Fortran中创建的,因此当计算被矢量化(用矩阵和矢量表示操作)时 ...
- 二维数组求子数组中最大的和
上次的课堂编程题目是一维数组中子数组的和,现在难度加大了不少,二维数组需要考虑的方面很多,这个程序我是在上个课堂题目基础上加以改善完成的,核心代码如下: int maxSubArray(int a[] ...
- 二维数组离散程度matlab,(十八)数据分析中的一些概念
(十八)数据分析中的一些概念 HIKAI 29 SEP 2017 0 Comments 矢量.向量.标量 矢量和向量是一个东西,只是在不同领域里面用到的不同称呼.矢量常常用在物理学中,向量在数学.几何 ...
- Java黑皮书课后题第8章:**8.37(猜测首府)编写一个程序,重复提示用户输入一个州的首府。当接收到用户输入后,程序报告答案是否正确。假设50个州以及它们的首府保存在一个二维数组中,提示用户回答所
**8.37(猜测首府)编写一个程序,重复提示用户输入一个州的首府 题目 题目描述与运行示例 破题 代码 题目 题目描述与运行示例 **8.37(猜测首府)编写一个程序,重复提示用户输入一个州的首府. ...
- c#给定二维数组按升序排序_在数组中按升序对数字进行排序| 8086微处理器
c#给定二维数组按升序排序 Problem: Write a program in 8086 microprocessor to sort numbers in ascending order in ...
- PHP如何判断一个数组是一维数组或者是二维数组?用什么函数?
如题:如何判断一个数组是一维数组或者是二维数组?用什么函数? 判断数量即可 <?php if (count($array) == count($array, 1)) {echo '是一维数组'; ...
- 取二维数组最大值_学习Java,你必需要知道这些——Java数组
目录 数组的概念 数组的创建 数组的引用 数组的创建 数组元素的初始化 数组的使用 使用数组 数组的复制 多维数组 数组的概念 数组由同一类型的对象或者基本数据组成,并封装在同一一个标识符(数组名称) ...
- php 三维数组合并成二维数组_Excel VBA 数组知识点,数组能不能用好,就看这个你学会没有...
今天和大家要说的是VBA数组的应用,上篇文章我们说的是数组的基础知识点,有不明白的小伙伴可以点击链接进行知识点回顾,今天主要说说数组的几个操作方法,这个是我们以后会经常遇到的,也是经常会使用的方法. ...
- 一维数组与二维数组及相关问题
package demo211124; import org.junit.Test; public class TestA { // 数组最为常见的一种数据结构 // 效率最高的存储和访问元素 ...
最新文章
- 讲解 Redis 的一篇深度好文!
- textarea 在浏览器中固定大小和禁止拖动
- 【AI初识境】如何增加深度学习模型的泛化能力
- Codeforces Round #481 (Div. 3) A. Remove Duplicates
- 【NLP】NLP从业人员必须知道的十大必备知识库(附资料下载)
- 深度学习-Tensorflow2.2-RNN循环神经网络{11}-评论分类-25
- (转)python3 计算字符串、文件md5值
- 【渝粤教育】电大中专学前儿童科学教育 (5)作业 题库
- linux系统中如何查看日志 (常用命令2)
- Javascript前端加载等待圆型圈提示实现效果
- 计算机网关,如何查看计算机的IP地址和网关
- 获取元素在文档上的正确坐标
- 无线网卡在使用过程突然不好使的解决方法,Deepin Linux 15.9与Windows 10双系统
- TOMCAT 优化设置
- 最新信恒第四方支付系统源码+服务器直接打包
- ( 科来网络分析系统 )简单的抓包步骤,具体的后面文章说
- B 站, YYDS!看了这些 Java视频,我直呼好家伙!!!
- Automatic Lip-reading with Hierarchical Pyramidal Convolution and Self-Attention for Image Sequences
- iphone mysql壁纸,壁纸图片动态
- 红米笔记本linux系统版本,一招让你的手机拥有三系统甚至四系统: WINDOWS+安卓+Linux...
热门文章
- 【XJTUSE计算机图形学】第四章 真实感图形学(1)——–颜色视觉
- 新版个人所得税计算python_最新个税计算 / 个税计算器 小程序 wepy 开发
- adobe photoshop cs4 注册码
- 常见的10种“瓶颈”
- 【编程之美】读书笔记:寻找最大的K个数
- K线形态识别—K线反转形态之头部反转形态
- 台式计算机是32位还64位,电脑系统装64位还是32位系统好?考虑这些才能正确安装...
- QtWebApp的使用【在Qt中搭建HTTP服务器】(一)
- 计算机0x50006错误,你们安装win8使用崩溃多少次
- 在线图片处理api接口