C++ 节点间存储成本

C++ 节点间存储成本,c++,search,vector,matrix,nodes,C++,Search,Vector,Matrix,Nodes,我正在使用统一成本搜索制作一个迷宫解算器,基本上我想做的是在迷宫中的房间之间存储随机成本 房间的数据结构(命名单元): 迷宫[1][1]的邻域向量中包含: neighbors[0] = *maze[1][2]; neighbors[1] = *maze[2][1]; 现在的成本向量是: cost[0] = 5; cost[1] = 10; 但这种做法产生了很多问题 我的想法是,我需要一个成本矩阵,它将一个节点与另一个节点匹配,并将成本存储在矩阵中,如下所示: 0 1 2 0[0][

我正在使用统一成本搜索制作一个迷宫解算器,基本上我想做的是在迷宫中的房间之间存储随机成本

房间的数据结构(命名单元):

迷宫[1][1]的邻域向量中包含:

neighbors[0] = *maze[1][2];
neighbors[1] = *maze[2][1];
现在的成本向量是:

cost[0] = 5;
cost[1] = 10;
但这种做法产生了很多问题

我的想法是,我需要一个成本矩阵,它将一个节点与另一个节点匹配,并将成本存储在矩阵中,如下所示:

  0  1  2 
0[0][2][4]
1[2][0][6]
2[4][6][0]
但是为了做到这一点,我如何让我的矩阵知道哪个细胞是哪个细胞?如何代替0和1,让它知道它是[0][0][0][1][0][2]等


我需要利用3D向量来做类似的事情吗?如果我这样做了,我宁愿避免使用它,因为我对3D矢量没有经验。

您不能使用自定义对象链接到另一个房间吗?例如:

struct Cell;

struct CellLink {
  const Cell *cell;
  const int weight;
  ..
};

struct Cell {
  int row;
  int column;
  vector<CellLink> neighbors;
  State state;
};
struct单元;
结构单元链接{
常量单元格*单元格;
常量整数权重;
..
};
结构单元{
int行;
int列;
向量邻域;
国家;
};

这将使成本和电池无需担心。唯一的缺点是,您会将每个成本存储两次(假设它是对称的),但在许多其他方法(包括矩阵)中也是如此。

看起来它应该可以工作,让我试试,我会给您回复的。
  0  1  2 
0[0][2][4]
1[2][0][6]
2[4][6][0]
struct Cell;

struct CellLink {
  const Cell *cell;
  const int weight;
  ..
};

struct Cell {
  int row;
  int column;
  vector<CellLink> neighbors;
  State state;
};