我正在使用统一成本搜索来制作迷宫解算器,基本上我想要做的是在我的迷宫中存储房间之间的随机成本。房间节点之间的存储成本
数据结构(命名为细胞):
struct Cell
{
int row;
int column;
vector<Cell*> neighbors;
State state;
};
行和列是在Cell的迷宫矢量的位置,vector<Cell*> neighbors
定义了哪些小区这个特定单元连接到与状态保持一小区的状态(已访问,空白等)。
我所做的是制作Cell结构的属性,如下所示:vector<int> cost
其中该数组的每个元素都与邻居元素相匹配。
例如:
0 ######
1 # ##
2 # # #
3 ######
迷宫[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矢量经验不足。
看起来应该可以工作,让我试试看,我会尽快回复您。 – Powerbyte
它的工作,谢谢。 – Powerbyte