2009-10-28 65 views
0

我創建掃雷艇,只是想知道當用戶按下空單元格時搜索所有空單元格的最佳算法,然後增長並限制到邊界直到它到達炸彈單元格。我計劃使用遞歸搜索,但可能會減慢這個過程。算法搜索掃雷艇中的空單元格

謝謝。

+4

數據量非常小,無關緊要。 – 2009-10-28 07:38:11

回答

4

如果你以圖形描繪了檢測我會說這將是最好的做多步(正如你提到的增長邊界):

  1. 顯示的點擊廣場,找到附近的所有條目這顯然是處理。
  2. 顯示這些方塊,找到明顯處理的所有條目。從第2步

這樣,用戶就可以看到這一點這是一件好事

  • 重複。混合一些動畫,它可能是一些很酷的東西,讓人有希望發生。

  • 3

    Epsilon Prime的解決方案是實施它的好方法。

    你可以用隊列來做到這一點。

    例子:

    push the first empty cell/point 
    LOOP until queue non empty 
        pop.head cell and reveal it 
        push the empty surrounding cells of it (8 at maximum) 
        (you must flag the cells so you don't push them again, 
         ie dont push the cells that are already revealed) 
    
    2

    從算法的角度來看,你不能去錯Breadth-First SearchDepth-First SearchNick D's answer基本上描述了廣度優先搜索,但一般來說,你想要的解決方案是「當你仍然在看廣場,顯示廣場;如果廣場沒有炸彈鄰居,那麼對於它的八個鄰居中的每一個尚未訪問過,請將它們標記爲已訪問並將它們添加到您正在查看的廣場列表中「。重複,直到你正在看的廣場清單是空的,並從用戶點擊的方塊開始。