请问有谁知道八皇后问题怎么快速构造特解?

来源:百度知道 编辑:UC知道 时间:2024/06/17 03:20:52
请具体解释下方法

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

ofstream fout ("checker.out");

long sum = 0, upperlim = 1;

void test(long row, long ld, long rd)
{
if (row != upperlim)
{
long pos = upperlim & ~(row | ld | rd);
for ( ; pos ; )
{
long p = pos & -pos;
pos -= p;
test(row + p, (ld + p) << 1, (rd + p) >> 1);
}
}
else sum++;
}
int main(){
int n ;
cin >> n ;
upperlim = (upperlim << n) - 1;
test(0, 0, 0);
cout << sum << endl ;
}