五子棋高级算法
我也想看,呵呵,wawacry@qq.com
这个对五子棋比较精通才能写好吧
我觉的可以将走步看成是对一个多叉树的遍历,在树的层次上应该是黑白棋交替,即若第一层是白子,那么第二层则是黑子,这棵树每次生成一层节点,也就是白子或者黑子走一次,一层中包含子的数量就是可能的走步,判断生成每个节点时白棋或者黑棋是否连成线(5个),若连成线,则退出。
回溯可能是这样的,若想白棋赢,这个算法若找到了白棋赢的树路径,则退出算法,若找到了黑棋赢,那么这条路径是不可行的,要回溯到上层节点继续遍历。
这个算法若用穷举法,你的棋盘有15*15=225个位置,那么可能要比较的次数会是225*224*223*......,估计这个算法是不可能实现的吧,要简化就要根据经验,对树做剪枝,减少比较次数。
这些经验像下面这样:
若甲方已经有三个子连成线,那么乙方在没有三个子连成线的情况下只能有
两种走法,也就是堵三,
若乙方有三个子连成线,那么会多出可选位置,也就是冲四的位置。
若甲方有四子连线,当然一头是堵住的,那么乙方只能有一个位置可以选择。
可以看一些五子棋高手的经验,将这些经验写到程序中去。
以上是突然想出来的,呵呵,希望大家***同讨论