题目描述

一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。(1<=m,n<=100)?

输入输出格式

输入格式:

输入:整数m,n(m行,n列)

矩阵

输出格式:

输出:细胞的个数

这个题主要是用到了搜索的知识

首先我们先来理解一下题意

输入输出样例

输入样例#1:

4  10
0234500067
1034560500
2045600671
0000000089
输出样例#1:

4
我们来看这个输入样例,会发现它其实是被分成了0和其他数字的一些范围,我们要找的是非0数字的集合的个数,以一个点的上下左右为可连接到的点,我们就能画出这个东西
0234500067
1034560500
2045600671
0000000089 我们可以看到所有的联通块总共有四个,所以细胞数目是4。
题意理解得差不多了,我们来看怎么实现代码,首先,我们把矩阵读入进去
这里有两种读入方式
1.字符数组读入,判的时候需要再开一个bool数组来标记是细胞和不是细胞(也就是0)
2.一个非常神奇的输入方式,
 scanf("%1d", &a[i][j]);
看到这个1d了吗,他其实就是控制输入场宽,来达到一个一个输入的方法,然后吧,因为读进来的是int所以应该是可以直接判真假,也就是说可以不用开bool数组(不过为了保险起见我还是开了一个)
读进来之后,从每一个数字开始判,当读到第一个非0细胞的时候,把其坐标压进队列并且置为0,然后对其上下左右都进行判断,如果符合条件就也压进队列,每一次都把队头弹出,知道一次队列完成
可能光这样讲不是太好理解,那么我们看代码
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
bool b[][];
int n, m, a[][], ans = ;
int dx[] = {-, , , },
dy[] = {, , , -};
inline void qaq(int x, int y)
{
int hx[], hy[], head = , tail = , tx, ty;
ans++;
hx[] = x, hy[] = y;
b[x][y] = false;
for (; head <= tail; ++head)
{
for (int i = ; i <= ; ++i)
{
tx = hx[head] + dx[i],
ty = hy[head] + dy[i];
if (tx > && tx <= m && ty > && ty <= n && b[tx][ty])
{
tail++;
hx[tail] = tx,
hy[tail] = ty;
b[tx][ty] = false;
}
}
}
}
int main()
{
scanf("%d%d", &m, &n);
for (int i = ; i <= m; ++i)
for (int j = ; j <= n; ++j)
b[i][j] = true;
for (int i = ; i <= m; ++i)
for (int j = ; j <= n; ++j)
{
scanf("%1d", &a[i][j]);
if (!a[i][j])
b[i][j] = false;
}
for (int i = ; i <= m; ++i)
for (int j = ; j <= n; ++j)
if (b[i][j])
qaq(i, j);
printf("%d", ans);
return ;
}

当符合条件,进行qaq(),然后按照队列的方式来进行处理,这个题就完事啦~

P1451 求细胞数量的更多相关文章

  1. 洛谷 P1451 求细胞数量

    题目链接 https://www.luogu.org/problemnew/show/P1451 题目描述 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字 ...

  2. 【新知识】队列&bfs【洛谷p1996约瑟夫问题&洛谷p1451求细胞数量】

    (是时候为五一培训准备真正的技术了qwq) part1  队列(FIFO) 算法简介: FIFO:First In First Out(先进先出) 队列是限定在一端进行插入,另一端进行删除的特殊线性表 ...

  3. 洛谷——P1451 求细胞数量

    P1451 求细胞数量 题目描述 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.(1<=m,n<=10 ...

  4. 洛谷P1451 求细胞数量

    求细胞数量 题目链接 这道题大概是一个最简单的联通块的题了qwq 注意枚举起点的时候 一定不要从0开始不然你就会从0进入到了其他联通块中从而多查. 一定看清题意这道题不是同色为联通块!!! AC代码如 ...

  5. 【dfs】p1451 求细胞数量

    题目描述 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.(1<=m,n<=100)? 输入输出格式## ...

  6. Luogu P1451 求细胞数量

    题目描述 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.(1<=m,n<=100)? 输入输出格式 输 ...

  7. 【一本通1329:【例8.2】细胞&&洛谷P1451 求细胞数量】

    1329:[例8.2]细胞 [题目描述] 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.如: 阵列 4 10 023 ...

  8. P1451 求细胞数量(广搜)

    题意:就是0把是所有细胞圈起来了.而被圈起来的是所有数字全部为一个细胞问有多少个这样的细胞.(mmp,我读半天题) 思路:广搜索.就是,0的话就不放入了,不为0的话,就进入队列,然后,再看它的4个方向 ...

  9. 【题解】求细胞数量-C++

    题目描述一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.(1<=m,n<=100)? 输入输出格式输入格 ...

随机推荐

  1. Docker+SpringBoot远程发布

    Docker+SpringBoot远程发布 发布成功后启动: docker run -di --name demo1.1 -p 8080:8085 demo:1.0 docker run 命令大全:h ...

  2. .net 笔试面试总结(2)

    在.net 中类(class) 与结构(Struct)的异同. Class 可以被实例化,属于引用类型,是分配在内存的堆上的.类是引用传递的. Struct 属于值类型,是分配在内存的栈上的.结构体是 ...

  3. vue-render函数和插槽

    Vue render函数,官方文档定义绝大部分时候我们使用template 来创建html 模板,但是纯html 和css都基本上都不具有编程能力,而当我们想使用 javascript的编程能力时,我 ...

  4. c#调用word文件

    大家好!我叫蓝颜,我是一名大专生.这是我第一次接触博客园,以后也会一直在. 在学校期间,参加技能大赛(物联网),接触到的C#.之后学校教务处要一个调课软件, 于是我就小试牛刀试了试.当然了,这也是我第 ...

  5. <3>Centos系统完整安装python流程

    一.环境 系统:Centos7 Python:3.6.5  自带pip.setuptools 二.命令 介绍:因为yum是依赖于python2,所以千万别删除自带的python2,下面的方法就是py2 ...

  6. appium入门元素识别参考

    https://www.cnblogs.com/miniren/p/7365885.html#top

  7. 局域网git服务器搭建(基于win7 + bonobo git server)

    公司内网有一台win7系统的服务器. 准备在上面部署git后台, 用于内网项目版本管理. 搜索了相关资料后, 在根据公司环境, 决定采用win7 + bonobo git server + git的方 ...

  8. C# 内插字符串与字符串复合格式

    var name = "Tom"; ; string aa = string.Format("name:{0},age:{1}", name, age);//字 ...

  9. kvm热添加和热迁移

    a.热添加磁盘 1.创建磁盘 qemu-img create -f qcow2 web01-add01.qcow2 5G 2.附加磁盘设备 virsh attach-disk web01 /opt/w ...

  10. @EnableFeignClients 注解

    feignClents在spring容器里找不到的原因 当使用的feignClents 来自引用别的工程时,需要指定包名,如果不指定就算使用ComponentScan 扫描也不行 import org ...