c# - 在 C# 中查找数组中的对象模式

标签 c# arrays algorithm

我正在寻找一种在数组中查找对象模式的有效方法。 这是我必须解决的问题。我正在编写一个有形的界面应用程序,它从网络摄像头收集数据,将其转换为黑白图像,我从中创建一个数组。创建的数组类似于以下内容:

1111111111111111111111111111
1111110001111111111000111111
1111100000111111110000011111
1111100000111111110000011111
1111110001111111111000111111
1111111111111111111111111111

其中零代表图像中的黑色。我有大约 32 个(4 行,每行 8 个圆圈)圆圈,我需要找到一种有效的方法来找到它们的坐标。我不需要整个形状,只需要每个圆的一组坐标。

谢谢你的帮助。

问候, 特奥多·斯托亚诺夫

最佳答案

我可以立即看到的三个选项(元组用于表示矩阵中的坐标):

  1. 你可以使用 BitArray为了 矩阵中的每个点,如果坐标有 O,则设置位,成本为 O(row length x column length) 用于存储。如果您知道要检查的坐标,则检索为 O(1),否则为 O(n),如果您只想找到所有 O 的

  2. 你可以使用 List<Tuple<int,int>> 只存储坐标 矩阵中的每个 O,成本将是 O(m) 用于存储,m 是 O 的数量。检索也是O(m)

  3. 除了选项 2,您还可以 使用Dictionary<Tuple<int, int>, bool> , 允许 O(1) 检索 时间如果你知道你的坐标 想检查一下。

关于c# - 在 C# 中查找数组中的对象模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4293336/

相关文章:

c# - 从 Windows 命令提示符运行本地 SQL 脚本文件以更新远程 SQL Server 数据库

c# - C++ 和 C# 之间不一致的伪随机数

performance - 距离近似?

c# - 依赖注入(inject)的方式

c# - 创建将两个整数列表合并为元组列表的函数

C++ 将两个 int 数组连接成一个更大的数组

java - 无法在 Java 中存储对象数组长度

javascript - 迭代数组时每三个元素换行一次

速率限制远程请求的算法

algorithm - 列表哈希函数