矩阵(数组)的簇

标签 c arrays matrix

所以。我在 C 语言中工作,我需要一些帮助。我有一个矩阵(数组)(我现在不知道如何正确翻译它 :D )其中只有 0 和 1。例如,一个可能看起来像这样: 1 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 1 1 0 1 0 0 1 0 1 1

现在。我需要从中提取包含 1 的簇。你能给我写一些关于如何处理这个的想法吗?我尝试了一个结构和一个指向它的 ** 指针,该结构包含 2 个元素:x 和 y,x 表示原始矩阵中的 x 坐标,y 表示矩阵中的 y 坐标。然后,对于每个集群,它看起来像: 集群[0][0].x = 0; 集群[0][0].y = 0; 集群[0][1].x = 1; 集群[0][1].y = 0; 集群[0][2].x = 0; 集群[0][2].y = 1; .. 等等。但是我在迭代方面遇到了一些问题(我有一个 1000*1000 矩阵),我决定问问你是否还有其他想法。谢谢。

编辑:这些是本例中的集群:

1: 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

2: 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

3: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0

4: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1

编辑2: 所以。从 1 和 0 的矩阵中,我需要提取所有相邻“1”的组。相邻意味着从它的位置左上或右上相邻。至于第一个集群是由矩阵开头的那 5 个“1”组成的集群。另一个集群是第 2 行第 4 列仅包含一个“1”的集群。我需要以某种方式将每个集群的 x 和 y 坐标存储在某处,因为我稍后需要使用它们。

最佳答案

对于字符串数据,只是一个数组

char  map[1000][1000]

这将使用 1 兆字节的内存,这在如今并不多。

我看到的算法是

  1. 在矩阵中找到一个1
  2. 对其进行填充(例如,将 1 更改为 20)
  3. 然后继续在矩阵中搜索1

返回转换所有1所需的填充数。

洪水填充是一个众所周知的算法,你应该能够找到合适的例子,或者可能使用图形库。

关于矩阵(数组)的簇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27858836/

相关文章:

c - C 中的结构,错误为 "no member named..."

c++ - 多个 va_end 调用的顺序是否重要?

c - 初始化 char 类型的数组

c - 当我 "make"valgrind 时,出现错误

arrays - 求和未排序数组中元素的算法

javascript - 我想根据平均水平检查学生的分数

arrays - 如何根据一列元素的频率对矩阵的行进行排序?

c++ - 无法将形状添加到数组 C++

R:将矩阵的上三角部分转换为对称矩阵

r - R Studio ("' 数据中的 XGBoost 错误具有类 'character' 和长度...”)