楼主 · 历史 (1)
首先有一些线性威胁模版 .XXX. .X.XX. XX.XX X.XXX YXXXX. .代表空,Y代表敌方棋子,X代表己方棋子,实际上还有一个Z用来填充,代表任意 这个程序可以搜索在N*N方格内放得下的所有威胁棋型 流程是:首先将线性模板的八个方向都生成(如果放得下),然后两两组合,现在有新的和旧的两部分,将新的和旧的笛卡尔积两两组合,现在有更新的了,将旧的和原来所谓新的都叫做旧的,对更新的进行去重,仍然两类,重复这一过程 过程中发现任何不能放得下的都剪枝剪掉 组合的定义是,将两个模版忽略Z,随意摆放(所有合法摆放都要,不旋转),只有相同的字母能重叠(Z除外,和任何字母可以重叠,重叠后变为其它字母),必须重叠至少一颗X,其他随意重叠(除了G不能和G重叠),将所有重叠的X中每一个变成G,分为多种情况(各种摆放算一次分叉,哪个重叠的X变成G算一次分叉),每一种情况,取最小的能装下它的矩形