【问题标题】:Finding adjacent elements of cell in a matrix [closed]在矩阵中查找单元格的相邻元素[关闭]
【发布时间】:2020-10-16 12:36:54
【问题描述】:

我有以下 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”表示从游戏中放置元素的可能位置@ 987654321@。我想知道是否有人给了我一个值为 "1" 的单元格的 (x,y) ,我怎样才能找到所有相邻单元格的坐标列表?

我尝试查找单元格是否在内部矩形中,并进一步根据 Ox 和 Oy 直接计算偏移量,但没有成功

【问题讨论】:

  • 到目前为止你有什么代码?
  • 创建一个包含 x 和 y 坐标的结构,然后使用其他数据结构的向量来存储相邻的单元格。这可以通过检查坐标(x+1,y+1​​)是否相邻然后(x-1,y-1)等等来完成。你应该有相邻单元格的块
  • 您为什么将问题标记为 C++ 和 Java。您的问题适用于哪种语言?

标签: java c++ algorithm


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 2014-12-14
    相关资源
    最近更新 更多