我也想看呵呵,wawacry@qq.com
這個對五子棋比較精通才能寫好吧
我覺的可以將走步看成是對一個多叉樹的遍歷,在樹的層次上應(yīng)該是黑白棋交替,即若第一層是白子,那么第二層則是黑子,這棵樹每次生成一層節(jié)點,也就是白子或者黑子走一次,一層中包含子的數(shù)量就是可能的走步,判斷生成每個節(jié)點時白棋或者黑棋是否連成線(5個),若連成線,則退出。
回溯可能是這樣的,若想白棋贏,這個算法若找到了白棋贏的樹路徑,則退出算法,若找到了黑棋贏,那么這條路徑是不可行的,要回溯到上層節(jié)點繼續(xù)遍歷。
這個算法若用窮舉法,你的棋盤有15*15=225個位置,那么可能要比較的次數(shù)會是225*224*223*......,估計這個算法是不可能實現(xiàn)的吧,要簡化就要根據(jù)經(jīng)驗,對樹做剪枝,減少比較次數(shù)。
這些經(jīng)驗像下面這樣:
若甲方已經(jīng)有三個子連成線,那么乙方在沒有三個子連成線的情況下只能有
兩種走法也就是堵三,
若乙方有三個子連成線,那么會多出可選位置,也就是沖四的位置。
若甲方有四子連線,當(dāng)然一頭是堵住的,那么乙方只能有一個位置可以選擇。
可以看一些五子棋高手的經(jīng)驗,將這些經(jīng)驗寫到程序中去。
以上是突然想出來的,呵呵,希望大家共同討論