在二维数组中将具有相同值的相邻条目分组

时间:2018-06-29 14:49:18

标签: c# arrays sorting unity3d

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

我有一个二维数组,我想将相同值的邻居分组在一起。使用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,但是我发现的资源完全是关于按升/降序对值进行排序的。只要向我指出正确的方向,一些相关的Web资源将不胜感激!

1 个答案:

答案 0 :(得分:1)

由于1.您不应该在这里提出要求,而且2.您绝对可以自己解决这个问题,因此我不会提供完整的答案。

这是一个很好的机会,您可以挥动笔和纸找出算法。可以说我们想要与您的任务类似的东西:仅将它们集群。伪代码可能看起来像这样。

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

If然后再通过一个小例子在纸上进行说明。

一旦有了所需的算法,将其放入字典中并对其进行排序应该很简单。