查找矩阵中单元格的相邻元素

Finding adjacent elements of cell in a matrix

本文关键字:元素 单元格 查找      更新时间:2023-10-16

>我有以下矩阵,有 25 行和 13 列:

A       B       C       D       E       F       G       
1 - - - - - - - - - - - 1 - - - - - - - - - - - 1 
| x x x x x x x x x x x x x x x x x x x x x x x | 
| x x x 1 - - - - - - - 1 - - - - - - - 1 x x x | 
| x x x | x x x x x x x x x x x x x x x | x x x | 
| x x x | x x x 1 - - - 1 - - - 1 x x x | x x x | 
| x x x | x x x | x x x x x x x | x x x | x x x | 
1 x x x 1 x x x 1 x x x x x x x 1 x x x 1 x x x 1 
| x x x | x x x | x x x x x x x | x x x | x x x | 
| x x x | x x x 1 - - - 1 - - - 1 x x x | x x x | 
| x x x | x x x x x x x x x x x x x x x | x x x | 
| x x x 1 - - - - - - - 1 - - - - - - - 1 x x x | 
| x x x x x x x x x x x x x x x x x x x x x x x | 
1 - - - - - - - - - - - 1 - - - - - - - - - - - 1

行和列除以 7,我将字母放在 A-G 的顶部以使其更明显。在矩阵中,我们有"1"。符号"1"表示从游戏 https://en.wikipedia.org/wiki/Nine_men%27s_morris 放置元素的可能位置。我试图弄清楚是否有人给了我值为"1"的单元格的 (x,y(,我如何找到所有相邻单元格的坐标列表?

我尝试查找单元格是否在内部矩形中,并进一步直接根据 Ox 和 Oy 计算偏移量是多少,但它不起作用

一般来说,要找到相邻的单元格,我们可以使用以下结构:

topLeft  = array[ x - 1 ][ y - 1 ]
top      = array[ x     ][ y - 1 ]
topRight = array[ x + 1 ][ y - 1 ]
midLeft  = array[ x - 1 ][ y     ]
midRight = array[ x + 1 ][ y     ]
botLeft  = array[ x - 1 ][ y + 1 ]
bot      = array[ x     ][ y + 1 ]
botRight = array[ x + 1 ][ y + 1 ]

请注意,上面的代码可以应用于不边界的单元格。其他方面,您将超出数组索引范围

这是所有可能的相邻单元格的列表。 目前还不清楚您想对这个相邻的单元格做什么,所以这是我现在可以提供的尽可能多的信息。

回答您的问题"如何找到所有相邻单元格的坐标列表?

使用上述结构,您可以将坐标存储在向量中,例如:

struct cords{
int cordX;
int cordY;
};

然后,一旦您使用上述方法找到相邻的单元格,您就可以执行以下操作

cords c;
c.cordX = ...;
c.cordY=...;
vector<cords> coordinates;
coordinates.push_back(c);