2012-03-21 73 views
0

我正在研究一个十五个难题,并试图在移动瓷砖时存储棋盘的不同状态。如何存储一系列阵列

由于我将试图用IDFS/IDFSA *搜索算法设置难题,我需要一种方法来存储每个数组。

这对我来说都是非常新的,我会喜欢一些关于如何做到这一点的指针。如果需要,可以链接代码,我必须基于此。谢谢你能帮助我的任何事情,我迷路了!

回答

0

你的问题被标记为C++,所以我假设你想用该语言的答案。您可以使用以下类型来存储板状态:

typedef array<array<int, 4>, 4> BoardState; 

这是一个整数的4x4“矩阵”。我会有0意味着空的和其他一些n(1 < = n < = 15)意思是第n件是在该位置。

对于A *搜索,您只需要找到一个很好的启发式方法,例如曼哈顿与最终位置的总曼哈顿距离。之后,这只是一个简单的教科书实施。 http://en.wikipedia.org/wiki/Best-first_search

0

确定为boardstate:

typedef std::array<std::array<int 5>, 5> boardstate; 

并保持整个系列:

std::vector<boardstate> timeseries; 

您可以添加在一系列元素,就像与你喜欢

时间任何其他元素矢量
int t; 
boardstate currentstate; 

timeseries[t]=currentstate;