前幾天看了下a*演算法,發現並不能實現連連看。a*演算法是尋找最短路徑的一種高效率的演算法,而連連看的路徑並不一定是最短的。
連連看的路徑最多只能轉折3次,因此判斷兩點的可延伸點是否有重複的,如果有,**折為0或1)可消除,如果沒有,再判斷每個延伸點的延伸點與目標點的延伸點是否有重複的,有則表示可以消除並且轉折了3次,沒有則不成功。
如圖 a→b x表示未消除的 0為a的延伸點,已經消除的 1為b的延伸點 2、3為相應0的延伸點xx
x1xx
x1(2)1b
1x
a 0
x 1x
x0xx
1xx0
331(3)xx
0x1
可以看出a→b 有兩條路徑,再判斷下路徑長度,就可以得到最短的路徑了。
連連看演算法
分類判斷法 這裡實質上是一種遞迴的思想,要判斷a與b能否通過一條有n個轉角的路徑相連,可以轉化為判斷能否找到c,c與a能直線相連,且c與b能用一條有n 1個轉角的路徑相連。若這樣的c存在,那麼a與b就可以通過一條有n個轉角的路徑相連。根據轉角數不得超過2個的規則,我們可以分為轉角數分別為0個 1個 ...
《連連看》的演算法
連連看所要求的是 1 兩個目標是相同的 2 兩個目標之間連線線的折點不超過兩個。連線線由x軸和y軸的平行線組成 那麼分析一下連線的情況可以看到,一般分三種情況 1 直線相連 2 乙個折點 3 兩個折點 如圖 可以發現,如果有折點,每個折點必定有且至少有乙個座標 x或者y 是和其中乙個目標點是相同的,...
連連看 演算法筆記
這幾天都沒有更新blog,正在用休息時間編寫乙個連連看的小遊戲,目前已經完成,還在測試階段,準備加如點背景 和效果.測試完成後再發布遊戲 象連連看這類遊戲,就是最短路徑求解,演算法要求如下 乙個int 型別的2維陣列,定義為 public const int tilerowcount 19 publ...