获取2D矩阵的相邻元素(仅限深度1)

时间:2011-03-31 18:33:05

标签: c matrix depth-first-search adjacency-list adjacency-matrix

我的图像是800 x 600。我想把它当作矩阵对待并获得相邻的元素

离。

(0,0)(1,0)(2,0)(3,0)

(0,1)(1,1)(2,1)(3,1)

(0,2)(1,2)(2,2)(3,2)

(0,3)(1,3)(2,3)(3,3)

示例解决方案: (0,0)与:(1,0)(0,1)(1,1)

相邻

(1,1)与:(0,0)(1,0)(2,0)(2,1)(2,2)(1,2)(0,2)(0, 1)

所以我写了一个结构数组,我将这些点中的每一个存储到

typdef struct point
{
    int x;
    int y;
}point[800*600];

所以我的第一个想法是实现一个dfs,但这并没有真正解决,所以我想得到一个外界的意见,让自己保持正确的轨道。感谢

1 个答案:

答案 0 :(得分:0)

最终答案取决于您如何将2D显示的排列可视化为1D阵列('行首列 - 最后'或'列 - 第一行 - 最后')。

假设'row-first'(沿着行的像素增加1,沿着列的像素增加ROW_LENGTH):

首先使用一些定义来设置ROW_LENGTH和COL_LENGTH

的值
#define ROW_LENGTH 800
#define COL_LENGTH 600

然后,如果需要更改,您可以轻松调整大小,而不会影响其余代码的工作方式。

typdef struct point
{
    int x;
    int y;
}point[ROW_LENGTH*COL_LENGTH];

之后,可以通过以下方式获得相邻的点:

adjacentWest = point[(y*ROW_LENGTH) + (x-1)];
adjacentNorth = point[((y+1)*ROW_LENGTH) + x];

您需要将北和南调整为+1或-1,具体取决于您的原点位于显示屏的左上角或左下角。