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

964: 数细胞

样例:

解法:

1.遍历矩阵

2.判断矩阵[i][j],若是未标记细胞则遍历相邻所有未标记细胞并标记,且计数

实现:遍历相邻所有未标记细胞

以DFS实现:

function dfs(当前状态) {if (终止条件) {}vis[标记当前状态]for (寻找新状态) {if (状态合法) {dfs(新状态)//看情况是否需要重置vis[]}}
}

代码

#include<iostream>
#include<vector>
using namespace std;
int dir[4][2] = { 0,1,1,0,-1,0,0,-1 };
void dfs(vector<vector<int>>& a, int x, int y) {if (a[x][y] == 0) return;a[x][y] = 0;for (int i = 0; i < 4; i++) {int nextx = x + dir[i][0];int nexty = y + dir[i][1];if (nextx < 0 || nextx >= a.size() || nexty < 0 || nexty >= a[0].size()) {continue;}if (a[nextx][nexty] != 0) {dfs(a, nextx, nexty);}}
}
int main() {int m, n;cin >> m >> n;vector<vector<int>> a(m, vector<int>(n , 0));for (int i = 0; i < m; i++)for (int j = 0; j < n; j++)cin >> a[i][j];int result = 0;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (a[i][j] != 0) {result++;dfs(a, i, j);}}}cout << result;return 0;
}

以BFS实现:

function bfs(当前节点) {当前节点入列标记当前节点while (队列不为空) {当前节点出列寻找合法相邻节点合法相邻节点入列标记相邻节点}
}

代码:

#include<iostream>
#include<vector>
#include<queue>
#include<utility>
using namespace std;
int dir[4][2] = { 0,1,1,0,-1,0,0,-1 };
void bfs(vector<vector<int>>& a, int x, int y) {queue<pair<int, int>> que;que.push({ x,y });a[x][y] = 0;while (!que.empty()) {pair<int, int> cur = que.front();que.pop();int curx = cur.first;int cury = cur.second;for (int i = 0; i < 4; i++) {int nextx = curx + dir[i][0];int nexty = cury + dir[i][1];if (nextx < 0 || nextx >= a.size() || nexty < 0 || nexty >= a[0].size()) {continue;}if (a[nextx][nexty] != 0) {que.push({ nextx,nexty });a[nextx][nexty] = 0;}}}
}
int main() {int m, n;cin >> m >> n;vector<vector<int>> a(m, vector<int>(n, 0));for (int i = 0; i < m; i++)for (int j = 0; j < n; j++)cin >> a[i][j];int result = 0;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (a[i][j] != 0) {result++;bfs(a, i, j);}}}cout << result;return 0;
}

http://www.lryc.cn/news/338540.html

相关文章:

  • 流程图步骤条
  • GPT知识库浅析
  • SpringMVC--SpringMVC的视图
  • Datax,hbase与mysql数据相互同步
  • ubuntu spdlog 封装成c++类使用
  • 【C语言】——字符串函数的使用与模拟实现(上)
  • 数据库(1)
  • VirtualBox - 与 Win10 虚拟机 与 宿主机 共享文件
  • 深入浅出 useEffect:React 函数组件中的副作用处理详解
  • 《QT实用小工具·十九》回车跳转到不同的编辑框
  • 基本的数据类型在16位、32位和64位机上所占的字节大小
  • 关注招聘 关注招聘 关注招聘
  • Django框架设计原理
  • Linux ARM平台开发系列讲解(QEMU篇) 1.2 新添加一个Linux kernel设备树
  • OSPF动态路由实验(思科)
  • MyBatis 等类似的 XML 映射文件中,当传入的参数为空字符串时,<if> 标签可能会导致 SQL 语句中的条件判断出现意外结果。
  • git的安装
  • 蓝桥杯嵌入式模板(cubemxkeil5)
  • ELFK (Filebeat+ELK)日志分析系统
  • HttpClient、OKhttp、RestTemplate接口调用对比( Java HTTP 客户端)
  • [旅游] 景区排队上厕所
  • 三 maven的依赖管理
  • iperf3 网络性能测试
  • 08 Php学习:if语句、Switch语句
  • 二分查找的边界问题是怎么产生的?
  • 华为 2024 届校园招聘-硬件通⽤/单板开发——第十套
  • 五子棋:不会下五子棋也没关系,会用Java写五子棋就行
  • 【VUE】使用Vue和CSS动画创建滚动列表
  • 分布式结构化数据表Bigtable
  • langchain 加载 csv,json