N皇后2(算法)
cols[N]
pie[N] i + j
na[N] i - j
int col, pie, na;
void DFS(row, col, pie, na)
if (row >= N) { count++; return; }
bits = (~(col | pie | na)) & ((1 << n) - 1)
while (bits > 0) {
P = bits & - bits
DFS(row + 1, col | P(pie | P) << 1, (na | P) >> 1)
bits &= bits - 1
}