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

时间:2020-06-25 23:26:13

标签: java c++ algorithm

我有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除,我在AG的顶部放了一些字母,以便于看到。在矩阵中,我们有“ 1”。符号“ 1”表示放置游戏元素的可能位置{ {3}}。我试图弄清楚是否有人给我一个值“ 1”的单元格的(x,y),如何找到所有相邻单元格的坐标列表?

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

1 个答案:

答案 0 :(得分:4)

通常,我们可以使用以下结构来查找相邻的单元格:

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);