2010-01-20 70 views
2

我在http://xepthu.uhm.vn找到了一對有趣的配對遊戲。規則很簡單,你必須找到並連接兩個相同的口袋妖怪,但它們之間的路徑不被阻塞,方向不能改變3次。讓我們來看一個例子:匹配成對搜索算法?

alt text http://img14.imageshack.us/img14/382/16170399.png

我有很多思考的算法來檢查是否有2選定的小寵物之間的路徑是有效的,但因爲我是個新手,所以我無法找到任何解決方案。你能用C#建議我嗎?謝謝。

+0

那麼,關於改變方向的部分很容易,但關於非交叉的部分是棘手的,因爲它取決於你如何繪製它。例如,連接第一行,第三列與底行,第三列可能會或可能不會與紅色路徑相交。 – 2010-01-20 14:40:06

+0

小寵物是隨機生成的,並且棋盤的大小是隨機的兩個。如果連接2只有效的寵物小精靈,它們將消失並離開空白區域。 – 2010-01-20 14:49:48

+0

這可能有幫助。 http://blogs.msdn.com/ericlippert/archive/tags/AStar/default.aspx – 2010-01-20 16:19:48

回答

2

這基本上是從graph theory找到問題的路徑。網格中的字段是節點,並且所有相鄰的字段都通過邊連接。

路徑查找是一個衆所周知的問題,並且有很多算法可以解決這個問題。由於您的圖形非常小,因此這裏最好的解決方案可能只是一個蠻力算法。流行的路徑搜尋算法是Dijkstra's algorithm


蠻力:開始在一些小寵物,並尋求一切可能的方式,查看是否會導致相同的寵物小精靈。如果途中被阻擋或者超過2回合,你可以停止探索。

你需要一些指針指向網格中的一個字段。指針可以向左,向右,向上或向下移動,前提是該方向上的字段未被阻止。將指針移到相鄰的字段。記住你來自哪裏以及你製作了多少回合。重複此操作直到您到達目的地。如果圈數達到3,則返回。確保您不以圓圈運行。

+0

是的,在這種情況下,強力是可行的。 – 2010-01-20 14:40:49

+0

感謝您的信息,閱讀它。 – 2010-01-20 14:51:33

0

看看平面圖。您將不得不引入第二個條件:不得超過四個節點(起始節點 - 第一個方向更改 - 第二個方向更改 - 最終節點)。

+0

感謝您的信息 – 2010-01-20 15:12:16