code vs 3492 细胞个数

简介: 题目链接:http://codevs.cn/problem/3492/题目描述 Description一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。

题目链接:http://codevs.cn/problem/3492/

题目描述 Description

一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。如阵列:

0234500067
1034560500
2045600671
0000000089
有4个细胞。

 

输入描述 Input Description

【输入格式】

整数m,n

(m行,n列)矩阵

 

输出描述 Output Description

【输出格式】

细胞的个数。

 

样例输入 Sample Input

4  10

0234500067
1034560500
2045600671
0000000089

 

样例输出 Sample Output

4

 

数据范围及提示 Data Size & Hint

1<=m,n<=1000

题目分析:

首先,题目描述的数据格式跟后台检测的数据格式不一致。后台检测的数据格式类似于下面:

4 10
0 2 3 4 5 0 0 0 6 7
1 0 3 4 5 6 0 5 0 0
2 0 4 5 6 0 0 6 7 1
0 0 0 0 0 0 0 0 8 9

所以,输入数据时应该要用int数组直接保存即可,不是用char数组保存。

【算法思路】
⑴从文件中读入m*n矩阵阵列,将其转换为bool矩阵存入b数组中;
⑵沿b数组矩阵从上到下,从左到右,找到遇到的第一个细胞;
⑶将细胞的位置入队h,入队后的位置b数组置为flase;
⑷将h队的队头出队,沿其上、下、左、右四个方向上的细胞位置入队,入队后的位置b数组置为flase;
⑸重复4,直至h队空为止,则此时找出了一个细胞;
⑹重复2,直至矩阵找不到细胞;
⑺输出找到的细胞数。


AC代码:

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<queue>
 4 using namespace std;
 5 int main(int argc, char *argv[])
 6 {
 7     queue<int> qx,qy;
 8     int n,m,i,j,x,y;
 9     int a[1002][1002];
10     int count=0;//细胞个数 
11     
12     scanf("%d%d",&n,&m);
13     for(i=0;i<n;i++)
14     {
15         for(j=0;j<m;j++)
16         {
17             scanf("%d",&a[i][j]);
18             //printf("%d ",a[i][j]);
19         }
20         //printf("\n");
21     }
22 
23     for(i=0;i<n;i++)
24     {
25         for(j=0;j<m;j++)
26         {
27             if(a[i][j]!=0)
28             {
29                 qx.push(i);   qy.push(j);
30                 a[i][j]=0;
31                 while(!qx.empty())
32                 {
33                     x=qx.front();  qx.pop();
34                     y=qy.front();  qy.pop();
35 
36                     if(y+1<m&&a[x][y+1]!=0)//当前坐标x,y的右边 
37                     {
38                         qx.push(x);  qy.push(y+1);
39                         a[x][y+1]=0;
40                     }
41                     if(x+1<n&&a[x+1][y]!=0)//当前坐标x,y的下边
42                     {
43                         qx.push(x+1);  qy.push(y);
44                         a[x+1][y]=0;
45                     }
46                     if(y-1>=0&&a[x][y-1]!=0)//当前坐标x,y的左边
47                     {
48                         qx.push(x); qy.push(y-1);
49                         a[x][y-1]=0;
50                     }
51                     if(x-1>=0&&a[x-1][y]!=0)//当前坐标x,y的上边
52                     {
53                         qx.push(x-1); qy.push(y);
54                         a[x-1][y]=0;
55                     }
56                 }
57                 count++;
58             }
59         }
60     }
61     printf("%d\n",count);/**/
62     return 0;
63 }

 

相关文章
|
缓存 架构师 算法
【Conan 入门教程 】深入理解 Conan 2.X 中的 self.source_folder
【Conan 入门教程 】深入理解 Conan 2.X 中的 self.source_folder
239 1
|
Linux
【Linux】命名管道的创建方法&&基于命名管道的两个进程通信的实现
【Linux】命名管道的创建方法&&基于命名管道的两个进程通信的实现
161 0
|
消息中间件 DataWorks 监控
DataWorks产品使用合集之如何设置同步的表和过滤条件
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
分形树
#define g 0.618#define PI 3.1416#include "graphics.h"#include "stdio.h"#include "conio.h"#include "math.
824 0
|
10天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
9天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
410 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
|
3天前
|
存储 安全 前端开发
如何将加密和解密函数应用到实际项目中?
如何将加密和解密函数应用到实际项目中?
199 138
|
9天前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
380 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)