N皇后问题的常数优化
每一行放一个皇后,那么就不存在行上的限制。
只存在列上的限制,左斜线的限制和右斜线的限制。
我们可以分别用三个数来代表列上的限制,左斜线的限制和右斜线的限制。
假如在八皇后中第一行放的是
那么第二行列上的限制就是
左斜线的限制就是
右斜线的限制就是
三个限制或得到整个的限制
也就是说第二行除了这几个地方不可以放,其他都可以 N皇后问题的常数优化最先出现在Python成神之路。
其他行也是一样的处理。
public static int num2(int n) {
if(n<1 || n>32) {
return 0;
}
//-1的补码就是32个1
int limit = n == 32?-1:(1<
共有 0 条评论