我正在研究一个十五个难题,并试图在移动瓷砖时存储棋盘的不同状态。如何存储一系列阵列
由于我将试图用IDFS/IDFSA *搜索算法设置难题,我需要一种方法来存储每个数组。
这对我来说都是非常新的,我会喜欢一些关于如何做到这一点的指针。如果需要,可以链接代码,我必须基于此。谢谢你能帮助我的任何事情,我迷路了!
我正在研究一个十五个难题,并试图在移动瓷砖时存储棋盘的不同状态。如何存储一系列阵列
由于我将试图用IDFS/IDFSA *搜索算法设置难题,我需要一种方法来存储每个数组。
这对我来说都是非常新的,我会喜欢一些关于如何做到这一点的指针。如果需要,可以链接代码,我必须基于此。谢谢你能帮助我的任何事情,我迷路了!
你的问题被标记为C++,所以我假设你想用该语言的答案。您可以使用以下类型来存储板状态:
typedef array<array<int, 4>, 4> BoardState;
这是一个整数的4x4“矩阵”。我会有0意味着空的和其他一些n(1 < = n < = 15)意思是第n件是在该位置。
对于A *搜索,您只需要找到一个很好的启发式方法,例如曼哈顿与最终位置的总曼哈顿距离。之后,这只是一个简单的教科书实施。 http://en.wikipedia.org/wiki/Best-first_search
确定为boardstate:
typedef std::array<std::array<int 5>, 5> boardstate;
并保持整个系列:
std::vector<boardstate> timeseries;
您可以添加在一系列元素,就像与你喜欢
时间任何其他元素矢量int t;
boardstate currentstate;
timeseries[t]=currentstate;