获取二维数组中的相邻元素?

我有一个二维数组

0 0 0 0 0

0 2 3 4 0

0 9 1 5 0

0 8 7 6 0

0 0 0 0 0

我需要获取与1(2,3,4,5,6,6,7,8,9)相邻的所有数字

有没有比以下更丑陋的解决方案:

topLeft = array[x-1][y-1]

top = array[x][y-1]

topRight = array[x+1][y-1]

# etc

谢谢!

回答:

如果您不担心顺序,最干净的方法可能是使用几个循环:

result = new List<int>(8);

for (dx = -1; dx <= 1; ++dx) {

for (dy = -1; dy <= 1; ++dy) {

if (dx != 0 || dy != 0) {

result.Add(array[x + dx][y + dy]);

}

}

}

如果顺序很重要,则可以按所需顺序构造所有(dx,dy)的列表,然后遍历该列表。

正如评论中指出的那样,您可能希望添加边界检查。您可以这样做(假设顺序无关紧要):

List<int> result = new List<int>(8);

for (int dx = (x > 0 ? -1 : 0); dx <= (x < max_x ? 1 : 0); ++dx)

{

for (int dy = (y > 0 ? -1 : 0); dy <= (y < max_y ? 1 : 0); ++dy)

{

if (dx != 0 || dy != 0)

{

result.Add(array[x + dx][y + dy]);

}

}

}

以上是 获取二维数组中的相邻元素? 的全部内容, 来源链接: utcz.com/qa/428072.html

回到顶部