我有一個下面顯示的問題,想要找到通過只使用騎士在國際象棋中移動的任何兩點之間的最快方法。我的第一個想法是給我們A*
算法或Dijkstra's
算法,然而,我不知道如何確保只使用騎士的移動。我會很感激,如果你可以建議一個更好的算法或只是一些提示來幫助我。謝謝。簡單算法從一個瓷磚移動到另一個棋子騎士的移動
寫被叫應答(SRC,DEST)函數,它有兩個參數:源廣場上,你開始和目的地廣場,這是你需要的土地,以解決這一難題。該函數應返回一個整數,表示使用棋子的移動將從源方塊移動到目標方塊所需的最小移動次數(也就是說,任何方向的兩個方塊緊跟着一個方塊,然後垂直於該方向或者反之亦然,呈「L」形)。源和目的地廣場將是0到63之間的整數,和編號如下面的例子棋盤:
------------------------- | 0| 1| 2| 3| 4| 5| 6| 7| ------------------------- | 8| 9|10|11|12|13|14|15| ------------------------- |16|17|18|19|20|21|22|23| ------------------------- |24|25|26|27|28|29|30|31| ------------------------- |32|33|34|35|36|37|38|39| ------------------------- |40|41|42|43|44|45|46|47| ------------------------- |48|49|50|51|52|53|54|55| ------------------------- |56|57|58|59|60|61|62|63| -------------------------
約瑟夫,謝謝你的有趣問題。我會在答案中加入我的方法,但我只想快速說幾件事。 (1)對問題有多種最短的解決方案; (2)存在一個代數解,給定x和y偏移量; (3)有8面對稱(實際上是4×2),因爲你可以研究x> y和x和y都爲正或零的情況。 – xxyzzy