问题:为彼此相邻的元素分配组号,其中组与空格分开

  • 本文关键字:空格 分配 元素 问题 c++
  • 更新时间 :
  • 英文 :


我们有一个房间,分为6x5个可能的座位,6x5矩阵中的每个位置都可以是座位,也可以是空的。

我们有一个矩阵,矩阵中已经分配了所有座位的位置,并且每个座位都有一个唯一的代码,该代码是实际的列(A,B,C,D,E)行(1,2,3,4,5,6)位置。

唯一代码示例可以是:A1, C4, E2, ....

请求将同一组分配给彼此相邻的所有座位:

示例:在这里输入图像描述

在本例中,结果用红色标记,显示3组。

组从1到N,左上角的第一个总是第一组。

对使用什么没有限制;数组,矩阵,列表,树,图。

我想知道这里是否有人能找到一个有效的算法来执行任何座位配置的练习。

这是一个经典的邻居搜索场景。参见BFS/DFS算法。

您可以将图形实例化为简单数组或二维数组,并在每个相邻单元之间具有隐式边,每个单元都分配了一个座位。

例如:

std::array<std::array<std::optional<unsigned>,7>,8> matrix;

可以看到,这个矩阵有两列两行,太大了。如果您将这些单元格作为哨兵,您可以节省很多性能。您实现一个函数来识别特定单元的所有邻居,并使用该函数来驱动BFS/DFS。您可以初始化所有包含座位的单元格为0,空单元格自动初始化为std::nullopt


如果你想偷懒并且你有一个非常密集的矩阵,你也可以使用并查找

相关内容

最新更新