八皇后问题:
在国际象棋棋盘(8x8)上,摆八个皇后,任意一个皇后都不能攻击另一个皇后(也就是说:任意两个皇后都不能在同一行,不能在同一列 ,不能在同一对角线)
递归地解释这个问题:假设我们已经生成了棋盘k-1列中k-1个皇后的所有可能方式,现在需
要的就是对其中每种方式,生成出将下一个皇后放在k列每一行的扩充集合。
把每次递归过程抽象为几步:(k-1)行前的皇后位置表和第k行组合成所有可能的位置表(map)—–筛选位置表(filter)—–递归调用函数
缩小规模,以三皇后问题为例,手动模拟递归,结果是无解(NULL)
Scheme代码:
>(define (queens board_size)
(define (queen_cols