2016-06-11 39 views
1

實現DFS的我工作的一段代碼,此刻,解決了數字遊戲:爲無限多圈搜索空間

  1. 開始與空10×10格。
  2. 在隨機的正方形中放置1。
  3. 按順序在塊中填入數字2-100。
  4. 向上,向下,向左移動&正確 - 您必須將數字放在3個街區以外。
  5. 對角線 - 您必須將數字放在2個街區以外。

我試圖實現深度優先搜索算法來搜索所有路徑以找到(可能的)解決方案。我遇到的問題是,當搜索到達沒有更多有效移動和回溯的狀態時,我無法將塊標記爲已訪問,因爲解決方案將不可避免地從另一個路徑使用該塊,但是如果我不標記它們當訪問時,搜索將無限次地循環和重新搜索路徑。

有沒有優雅的解決方案來解決這個問題?或者我應該研究其他搜索算法以解決問題?任何暗示正確的方向將不勝感激。

例(第一3個移動):

. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . 1 . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 

. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . 1 . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . 2 . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 

. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . 1 . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . 2 . . . . 
. . . . . . . . . . 
. . . 3 . . . . . . 
. . . . . . . . . . 
+0

你能舉一個第四和第五條規則的例子嗎? –

+0

當然可以。我很抱歉,這有點含糊。 – nickcorin

+0

您的意思是說,在您放置一個號碼後,您會爲下一個號碼準確定位8個位置? 3個位置向右,或向左,向上或向下,或2個位置向左,向右,向左或向右?假設那8個仍然在10x10平方米內。 –

回答

-1

由於參觀的地位似乎是你的問題的陳述,你可以創建一個同樣大小的另一個數組並把訪問狀態存在。

你可以做的另一件事是使用負數作爲訪問狀態標誌。例如,標記爲'5'的位置未被訪問,但標記爲'-5'的位置意味着它是'5',但是另外被訪問。