【问题标题】:Grouping neighbouring entries with the same value in a 2d array在二维数组中对具有相同值的相邻条目进行分组
【发布时间】:2018-06-29 14:49:17
【问题描述】:

编辑:我现在意识到这个问题不适合堆栈,但无论如何我得到了很多有用的建议。感谢大家!

我有一个二维数组,我想将具有相同值的邻居组合在一起。使用 C#(使用统一)。

假设我有这个:

int[,] array {   
    0,0,0,0,0,0,1,0,0,0,  
    0,1,1,0,0,0,1,0,0,0,  
    0,1,0,0,0,0,0,0,0,0,  
    0,0,0,0,0,0,1,1,1,0,  
    0,0,0,0,0,0,1,1,1,0  
}

存在三个 1:s 的“集群”。我想将它们添加到带有一些变量以进行识别的字典中。所以可能首先将相邻值添加到列表中,将该列表添加到字典中,清除列表并移动到下一个集群。

实际中的列和行的长度相同。

我还希望排序方法接受各种大小的数组,因此没有硬编码值。我从 XML 文档中解析数组。

我试过查看Array.Sort,但我发现的资源完全是关于按/降序对值进行排序的。只是指出我正确的方向,一些相关的网络资源将不胜感激!

【问题讨论】:

  • 堆栈不是“将您引向正确方向”的正确位置。相反,它是针对 specific 编程相关问题的 specific 问题。因此,在这里问“我该怎么做”是题外话。
  • 我认为我的问题非常具体。如果没有别的,我会很感激“把你放在正确的方向”。但如果我误解了规则,我很抱歉。
  • 没有内置插件可以识别您在这样的数据结构中寻找的功能。你需要自己写。尝试这样做,我们可以帮助您解决问题。
  • 您需要将其分解为更小的子问题。例如,如何在数组中找到“簇”?您如何表示字典中的集群?您如何标记集群以进行识别?由于您正在构建此特定软件,因此只有您可以回答最后两个问题。第一个问题需要进行一些研究,以找到可以适应您的问题的现有算法。

标签: c# arrays sorting unity3d


【解决方案1】:

我不会用完整的代码给你答案,因为 1. 你不应该在这里问它 2. 你绝对可以自己解决。

这是您拿出笔和纸并找出算法的好机会。假设我们想要与您的任务类似的东西:只需对集群进行分组。伪代码可能看起来像这样。

  1. 创建集群列表
  2. 对于网格中的每个元素,检查其是否为一个。
  3. 如果是一个,检查它是否有一个邻居是集群的一部分。 如果是,请将其添加到该集群,否则创建一个新集群并添加它。

如果会在纸上运行一个小例子。

一旦你有了你想要的算法,将它放入字典并对其进行排序应该是微不足道的。

【讨论】:

    猜你喜欢
    • 2015-04-22
    • 1970-01-01
    • 2012-11-06
    • 2018-10-12
    • 1970-01-01
    • 2020-08-14
    • 2015-09-28
    • 2020-02-14
    • 1970-01-01
    相关资源
    最近更新 更多