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