当前位置: 首页 > news >正文

求细胞数量

2025.9.13 曹立

题目内容

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

输入描述

第一行两个整数代表矩阵大小 \(m\)\(m\)

接下来 \(m\) 行,每行一个长度为 \(n\) 的只含字符 09 的字符串,代表这个 \(m \times n\) 的矩阵

输出描述

一行一个整数代表细胞个数

输入输出样例

输入

4 10
0234500067
1034560500
2045600671
0000000089

输出

4

C++实现(bfs版)

#include <bits/stdc++.h>
using namespace std;int n, m;
vector<string> grid;
bool visited[105][105];// 上下左右方向
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, -1, 1};void bfs(int x, int y) {queue<pair<int,int>> q;q.push({x, y});visited[x][y] = true;while (!q.empty()) {auto [cx, cy] = q.front();q.pop();for (int i = 0; i < 4; i++) {int nx = cx + dx[i];int ny = cy + dy[i];if (nx >= 0 && nx < n && ny >= 0 && ny < m) {if (!visited[nx][ny] && grid[nx][ny] != '0') {visited[nx][ny] = true;q.push({nx, ny});}}}}
}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);cin >> n >> m;grid.resize(n);for (int i = 0; i < n; i++) {cin >> grid[i];}int count = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (!visited[i][j] && grid[i][j] != '0') {count++;bfs(i, j);}}}cout << count << "\n";return 0;
}

C++实现(dfs版)

#include <bits/stdc++.h>
using namespace std;int n, m;
vector<string> grid;
bool visited[105][105];// 方向:上下左右
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, -1, 1};void dfs(int x, int y) {visited[x][y] = true;for (int i = 0; i < 4; i++) {int nx = x + dx[i];int ny = y + dy[i];if (nx >= 0 && nx < n && ny >= 0 && ny < m) {if (!visited[nx][ny] && grid[nx][ny] != '0') {dfs(nx, ny);}}}
}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);cin >> n >> m;grid.resize(n);for (int i = 0; i < n; i++) {cin >> grid[i];}int count = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (!visited[i][j] && grid[i][j] != '0') {count++;dfs(i, j);}}}cout << count << "\n";return 0;
}
http://www.wxhsa.cn/company.asp?id=3001

相关文章:

  • [SSL]
  • Rust 生命周期详解 - 实践
  • 笔记《机器人动力学理论及其应用》上交桂凯博士-中科深谷机器人大讲堂第10期
  • [豪の学习笔记] 软考中级备考 基础复习#9
  • Shiro概述 - 详解
  • 2025CCPC南昌邀请赛游记
  • 双因素认证暴力破解绕过技术解析(2023更新版)
  • 文本三剑客
  • 软件工程第二次作业-个人项目
  • Git 分支
  • 用 Go 打造一个服务器资源指标采集器:结合 Prometheus Exporter 实战
  • 2025年API安全建设方案最佳实践:七步五方法
  • 【数学】拉格朗日乘数法
  • 华为芯片之父,33年默默开拓,铸就“中国芯”,功成身退时却鲜有人知!
  • Redis为什么适合做分布式锁? - 浪矢
  • 百度昆仑芯高调出圈:对标寒武纪,估值或达千亿港元?
  • WPS 定制版
  • 2024年以来,数学领域已有多位在国外顶尖高校取得终身教职的学者回国
  • 685.冗余连接
  • form表单和表单控件
  • 阿里云OSS图片生成缩略图和获取视频的封面方法
  • VSCode 运行 Python
  • [mysql] 卸载
  • 树上问题
  • 突发!美国将复旦微等23家中国实体列入“实体清单”
  • [GenAI] Function Calling
  • form表单
  • 【Zotero7】使用Attanger和百度同步空间如何进行同步?
  • XSS 漏洞挖掘学习
  • str