题意:
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任务是,对于给定的N,求出有多少种合法的放置方法。
示例输入:
1
8
5
0
示例输出:
1
92
10
解决方案:
在N*N的棋盘中,假设当前有一个皇后的所在位置为[i,j],则以下四种位置都不能出现其它皇后:
位置 | 特征 | |
1 | 同一行 | 该行上任一位置,行坐标与i相等 |
2 | 同一列 | 该列上任一位置,列坐标与j相等 |
3 | 同一负45度斜线(\) | 该斜线上任一位置,其行坐标减去列坐标等于i-j |
4 | 同一正45度斜线(/) | 该斜线上任一位置,其行坐标加上列坐标等于i+j |
只要满足上述条件中一条,其皇后的位置不合法,应剪掉其与其子树(空间状态树)。
AC源代码:
#inc