2012-03-21 80 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;