【发布时间】:2012-03-21 01:41:18
【问题描述】:
我正在研究十五个拼图,并尝试在移动棋子时存储棋盘的不同状态。
由于我将尝试使用 IDFS/IDFSA* 搜索算法设置拼图,因此我需要一种方法来存储每个数组。
这对我来说都是全新的,我希望得到一些关于如何做到这一点的建议。如有必要,可以根据我必须基于的链接代码。感谢您可以帮助我的任何事情,我迷路了!
【问题讨论】:
标签: c++ arrays multidimensional-array storage
我正在研究十五个拼图,并尝试在移动棋子时存储棋盘的不同状态。
由于我将尝试使用 IDFS/IDFSA* 搜索算法设置拼图,因此我需要一种方法来存储每个数组。
这对我来说都是全新的,我希望得到一些关于如何做到这一点的建议。如有必要,可以根据我必须基于的链接代码。感谢您可以帮助我的任何事情,我迷路了!
【问题讨论】:
标签: c++ arrays multidimensional-array storage
您的问题被标记为 C++,所以我假设您想要用该语言获得答案。您可以使用以下类型来存储棋盘状态:
typedef array<array<int, 4>, 4> BoardState;
这是一个 4x4 整数“矩阵”。我将有 0 表示空,而其他一些 n (1
对于 A* 搜索,您只需要找到一个好的启发式方法,例如从最终位置到曼哈顿的总距离。之后,它只是一个简单的教科书实现。 http://en.wikipedia.org/wiki/Best-first_search
【讨论】:
好的董事会状态:
typedef std::array<std::array<int 5>, 5> boardstate;
并持有整个系列:
std::vector< boardstate > timeseries;
您可以像添加任何其他元素向量一样随时在系列中添加元素
int t;
boardstate currentstate;
timeseries[t]=currentstate;
【讨论】: