C# 二维网格阵列c的外边缘选择算法#

C# 二维网格阵列c的外边缘选择算法#,c#,algorithm,unity3d,multidimensional-array,C#,Algorithm,Unity3d,Multidimensional Array,我使用以下代码在c#中创建了一个二维网格: for(int i = 0; i < 5; i++){ for(int j = 0; j < 5; j++){ array.add(new vector3(i,0,j); } } e、 我想得到上面所有零位置的坐标列表,并将它们添加到第二个列表中。如何最好地解决这个问题 我的尝试使用了各种嵌套循环,它们也创建了重复的循环。所选答案看起来比嵌套循环更好,并将返回我所要的值 似乎需要值为0且相邻单元格的值为1的

我使用以下代码在c#中创建了一个二维网格:

for(int i = 0; i < 5; i++){
    for(int j = 0; j < 5; j++){
        array.add(new vector3(i,0,j);
    }
}
e、 我想得到上面所有零位置的坐标列表,并将它们添加到第二个列表中。如何最好地解决这个问题


我的尝试使用了各种嵌套循环,它们也创建了重复的循环。所选答案看起来比嵌套循环更好,并将返回我所要的值

似乎需要值为0且相邻单元格的值为1的所有网格单元格的坐标。因此,您需要访问每个网格单元,检查这两个条件,如果通过,则将坐标添加到列表中。当位于网格边缘时,在计算相邻单元的坐标时要小心。

可以对嵌套循环使用一些条件来丰富结果,但正如您所提到的,您需要一个有效的循环。 更快的方法是使用两个简单的循环:

1, 1, 1, 1, 1
2, 0, 0, 0, 2
2, 0, 0, 0, 2
2, 0, 0, 0, 2
1, 1, 1, 1, 1
此循环为您提供1s:

for(int i = 0; i < array.length; i++){
    list.Add(array[i][0]);
    list.Add(array[i][array.length-1]);
}
for(int i=0;i
这个给你2s:

for(int i = 1; i < array.length -1; i++){
    list.Add(array[0][i]);
    list.Add(array[array.length-1][i]);
}
for(int i=1;i
您尝试过什么?我看到了您的初始化代码,但我没有看到任何试图找到坐标的尝试。
我似乎无法有效地编写循环。
效率是您的最后一个问题。首先让我们看看你试过什么inefficiently@BrianPeach你的问题有点不清楚。示例数据显示5行5列。你想返回那些特定的单元格中的哪一个,为什么?只要等到你有足够的声誉,然后将其作为评论发布即可。
for(int i = 1; i < array.length -1; i++){
    list.Add(array[0][i]);
    list.Add(array[array.length-1][i]);
}