int main()
{
int here[8] = {-1,-1,-1,-1,-1,-1,-1,-1};//某行已遍历位置
int a[8]; //某列有皇后
int b[15];//主对角线有皇后 “/”
int c[15];//次对角线有皇后 “\”
int count=0;
//memset(here,-1,sizeof(int)*8);
memset(a,0,sizeof(int)*8);
memset(b,0,sizeof(int)*15);
memset(c,0,sizeof(int)*15);
int line = 0;
bool matched;
while( line>=0 )//回溯未超出第0行
{
matched = false;
for (int i =here[line]+1;i<8;i++)//从上一次遍历到的位置之后开始搜索
{
if (0==a[i] && 0==b[line+7-i] && 0==c[line+i])//第一个匹配的位置
{
if (here[line]>=0)//清除原记录
{
a[here[line]] = b[line+7-here[line]] = c[line+here[line]] = 0;
}
here[line] = i;
a[i] = b[line+7-i] = c[line+i] = 1;
matched = true;
break;
}
}
if (matched)
{
line++;//下一行
if (line == 8)
{
count++;
line--;
}
}
else
{
if (here[line]>=0)//清除原记录
{
int tmp = here[line];
here[line] = -1;
a[tmp] = b[line+7-tmp] = c[line+tmp] = 0;
}
line--;//回溯
}
}
printf("%d\n",count);
return 0;
}
@ * * * * * * *
* * * * @ * * *
* * * * * * * @
* * * * * @ * *
* * @ * * * * *
* * * * * * @ *
* @ * * * * * *
* * * @ * * * *
@ * * * * * * *
* * * * * @ * *
* * * * * * * @
* * @ * * * * *
* * * * * * @ *
* * * @ * * * *
* @ * * * * * *
* * * * @ * * *
@ * * * * * * *
* * * * * * @ *
* * * @ * * * *
* * * * * @ * *
* * * * * * * @
* @ * * * * * *
* * * * @ * * *
* * @ * * * * *
@ * * * * * * *
* * * * * * @ *
* * * * @ * * *
* * * * * * * @
* @ * * * * * *
* * * @ * * * *
* * * * * @ * *
* * @ * * * * *
* @ * * * * * *
* * * @ * * * *
* * * * * @ * *
* * * * * * * @
* * @ * * * * *
@ * * * * * * *
* * * * * * @ *
* * * * @ * * *
* @ * * * * * *
* * * * @ * * *
* * * * * * @ *
@ * * * * * * *
* * @ * * * * *
* * * * * * * @
* * * * * @ * *
* * * @ * * * *
* @ * * * * * *
* * * * @ * * *
* * * * * * @ *
* * * @ * * * *
@ * * * * * * *
* * * * * * * @
* * * * * @ * *
* * @ * * * * *
* @ * * * * * *
* * * * * @ * *
@ * * * * * * *
* * * * * * @ *
* * * @ * * * *
* * * * * * * @
* * @ * * * * *
* * * * @ * * *
* @ * * * * * *
* * * * * @ * *
* * * * * * * @
* * @ * * * * *
@ * * * * * * *
* * * @ * * * *
* * * * * * @ *
* * * * @ * * *
* @ * * * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * @ * *
* * * * * * * @
* * * * @ * * *
@ * * * * * * *
* * * @ * * * *
* @ * * * * * *
* * * * * * @ *
* * * * @ * * *
* * * * * * * @
@ * * * * * * *
* * * @ * * * *
* * * * * @ * *
* * @ * * * * *
* @ * * * * * *
* * * * * * * @
* * * * * @ * *
@ * * * * * * *
* * @ * * * * *
* * * * @ * * *
* * * * * * @ *
* * * @ * * * *
* * @ * * * * *
@ * * * * * * *
* * * * * * @ *
* * * * @ * * *
* * * * * * * @
* @ * * * * * *
* * * @ * * * *
* * * * * @ * *
* * @ * * * * *
* * * * @ * * *
* @ * * * * * *
* * * * * * * @
@ * * * * * * *
* * * * * * @ *
* * * @ * * * *
* * * * * @ * *
* * @ * * * * *
* * * * @ * * *
* @ * * * * * *
* * * * * * * @
* * * * * @ * *
* * * @ * * * *
* * * * * * @ *
@ * * * * * * *
* * @ * * * * *
* * * * @ * * *
* * * * * * @ *
@ * * * * * * *
* * * @ * * * *
* @ * * * * * *
* * * * * * * @
* * * * * @ * *
* * @ * * * * *
* * * * @ * * *
* * * * * * * @
* * * @ * * * *
@ * * * * * * *
* * * * * * @ *
* @ * * * * * *
* * * * * @ * *
* * @ * * * * *
* * * * * @ * *
* @ * * * * * *
* * * * @ * * *
* * * * * * * @
@ * * * * * * *
* * * * * * @ *
* * * @ * * * *
* * @ * * * * *
* * * * * @ * *
* @ * * * * * *
* * * * * * @ *
@ * * * * * * *
* * * @ * * * *
* * * * * * * @
* * * * @ * * *
* * @ * * * * *
* * * * * @ * *
* @ * * * * * *
* * * * * * @ *
* * * * @ * * *
@ * * * * * * *
* * * * * * * @
* * * @ * * * *
* * @ * * * * *
* * * * * @ * *
* * * @ * * * *
@ * * * * * * *
* * * * * * * @
* * * * @ * * *
* * * * * * @ *
* @ * * * * * *
* * @ * * * * *
* * * * * @ * *
* * * @ * * * *
* @ * * * * * *
* * * * * * * @
* * * * @ * * *
* * * * * * @ *
@ * * * * * * *
* * @ * * * * *
* * * * * @ * *
* * * * * * * @
@ * * * * * * *
* * * @ * * * *
* * * * * * @ *
* * * * @ * * *
* @ * * * * * *
* * @ * * * * *
* * * * * @ * *
* * * * * * * @
@ * * * * * * *
* * * * @ * * *
* * * * * * @ *
* @ * * * * * *
* * * @ * * * *
* * @ * * * * *
* * * * * @ * *
* * * * * * * @
* @ * * * * * *
* * * @ * * * *
@ * * * * * * *
* * * * * * @ *
* * * * @ * * *
* * @ * * * * *
* * * * * * @ *
* @ * * * * * *
* * * * * * * @
* * * * @ * * *
@ * * * * * * *
* * * @ * * * *
* * * * * @ * *
* * @ * * * * *
* * * * * * @ *
* @ * * * * * *
* * * * * * * @
* * * * * @ * *
* * * @ * * * *
@ * * * * * * *
* * * * @ * * *
* * @ * * * * *
* * * * * * * @
* * * @ * * * *
* * * * * * @ *
@ * * * * * * *
* * * * * @ * *
* @ * * * * * *
* * * * @ * * *
* * * @ * * * *
@ * * * * * * *
* * * * @ * * *
* * * * * * * @
* @ * * * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * @ * *
* * * @ * * * *
@ * * * * * * *
* * * * @ * * *
* * * * * * * @
* * * * * @ * *
* * @ * * * * *
* * * * * * @ *
* @ * * * * * *
* * * @ * * * *
* @ * * * * * *
* * * * @ * * *
* * * * * * * @
* * * * * @ * *
@ * * * * * * *
* * @ * * * * *
* * * * * * @ *
* * * @ * * * *
* @ * * * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * @ * *
* * * * * * * @
@ * * * * * * *
* * * * @ * * *
* * * @ * * * *
* @ * * * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * @ * *
* * * * * * * @
* * * * @ * * *
@ * * * * * * *
* * * @ * * * *
* @ * * * * * *
* * * * * * @ *
* * * * @ * * *
@ * * * * * * *
* * * * * * * @
* * * * * @ * *
* * @ * * * * *
* * * @ * * * *
* @ * * * * * *
* * * * * * * @
* * * * @ * * *
* * * * * * @ *
@ * * * * * * *
* * @ * * * * *
* * * * * @ * *
* * * @ * * * *
* @ * * * * * *
* * * * * * * @
* * * * * @ * *
@ * * * * * * *
* * @ * * * * *
* * * * @ * * *
* * * * * * @ *
* * * @ * * * *
* * * * * @ * *
@ * * * * * * *
* * * * @ * * *
* @ * * * * * *
* * * * * * * @
* * @ * * * * *
* * * * * * @ *
* * * @ * * * *
* * * * * @ * *
* * * * * * * @
* @ * * * * * *
* * * * * * @ *
@ * * * * * * *
* * @ * * * * *
* * * * @ * * *
* * * @ * * * *
* * * * * @ * *
* * * * * * * @
* * @ * * * * *
@ * * * * * * *
* * * * * * @ *
* * * * @ * * *
* @ * * * * * *
* * * @ * * * *
* * * * * * @ *
@ * * * * * * *
* * * * * * * @
* * * * @ * * *
* @ * * * * * *
* * * * * @ * *
* * @ * * * * *
* * * @ * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * * * @
* @ * * * * * *
* * * * @ * * *
@ * * * * * * *
* * * * * @ * *
* * * @ * * * *
* * * * * * @ *
* * * * @ * * *
* @ * * * * * *
* * * * * @ * *
@ * * * * * * *
* * @ * * * * *
* * * * * * * @
* * * @ * * * *
* * * * * * @ *
* * * * @ * * *
* * @ * * * * *
@ * * * * * * *
* * * * * @ * *
* * * * * * * @
* @ * * * * * *
* * * @ * * * *
* * * * * * * @
@ * * * * * * *
* * @ * * * * *
* * * * * @ * *
* @ * * * * * *
* * * * * * @ *
* * * * @ * * *
* * * @ * * * *
* * * * * * * @
@ * * * * * * *
* * * * @ * * *
* * * * * * @ *
* @ * * * * * *
* * * * * @ * *
* * @ * * * * *
* * * @ * * * *
* * * * * * * @
* * * * @ * * *
* * @ * * * * *
@ * * * * * * *
* * * * * * @ *
* @ * * * * * *
* * * * * @ * *
* * * * @ * * *
@ * * * * * * *
* * * @ * * * *
* * * * * @ * *
* * * * * * * @
* @ * * * * * *
* * * * * * @ *
* * @ * * * * *
* * * * @ * * *
@ * * * * * * *
* * * * * * * @
* * * @ * * * *
* @ * * * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * @ * *
* * * * @ * * *
@ * * * * * * *
* * * * * * * @
* * * * * @ * *
* * @ * * * * *
* * * * * * @ *
* @ * * * * * *
* * * @ * * * *
* * * * @ * * *
* @ * * * * * *
* * * @ * * * *
* * * * * @ * *
* * * * * * * @
* * @ * * * * *
@ * * * * * * *
* * * * * * @ *
* * * * @ * * *
* @ * * * * * *
* * * @ * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * * * @
* * * * * @ * *
@ * * * * * * *
* * * * @ * * *
* @ * * * * * *
* * * * * @ * *
@ * * * * * * *
* * * * * * @ *
* * * @ * * * *
* * * * * * * @
* * @ * * * * *
* * * * @ * * *
* @ * * * * * *
* * * * * * * @
@ * * * * * * *
* * * @ * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * @ * *
* * * * @ * * *
* * @ * * * * *
@ * * * * * * *
* * * * * @ * *
* * * * * * * @
* @ * * * * * *
* * * @ * * * *
* * * * * * @ *
* * * * @ * * *
* * @ * * * * *
@ * * * * * * *
* * * * * * @ *
* @ * * * * * *
* * * * * * * @
* * * * * @ * *
* * * @ * * * *
* * * * @ * * *
* * @ * * * * *
* * * * * * * @
* * * @ * * * *
* * * * * * @ *
@ * * * * * * *
* * * * * @ * *
* @ * * * * * *
* * * * @ * * *
* * * * * * @ *
@ * * * * * * *
* * @ * * * * *
* * * * * * * @
* * * * * @ * *
* * * @ * * * *
* @ * * * * * *
* * * * @ * * *
* * * * * * @ *
@ * * * * * * *
* * * @ * * * *
* @ * * * * * *
* * * * * * * @
* * * * * @ * *
* * @ * * * * *
* * * * @ * * *
* * * * * * @ *
* @ * * * * * *
* * * @ * * * *
* * * * * * * @
@ * * * * * * *
* * @ * * * * *
* * * * * @ * *
* * * * @ * * *
* * * * * * @ *
* @ * * * * * *
* * * * * @ * *
* * @ * * * * *
@ * * * * * * *
* * * @ * * * *
* * * * * * * @
* * * * @ * * *
* * * * * * @ *
* @ * * * * * *
* * * * * @ * *
* * @ * * * * *
@ * * * * * * *
* * * * * * * @
* * * @ * * * *
* * * * @ * * *
* * * * * * @ *
* * * @ * * * *
@ * * * * * * *
* * @ * * * * *
* * * * * * * @
* * * * * @ * *
* @ * * * * * *
* * * * @ * * *
* * * * * * * @
* * * @ * * * *
@ * * * * * * *
* * @ * * * * *
* * * * * @ * *
* @ * * * * * *
* * * * * * @ *
* * * * @ * * *
* * * * * * * @
* * * @ * * * *
@ * * * * * * *
* * * * * * @ *
* @ * * * * * *
* * * * * @ * *
* * @ * * * * *
* * * * * @ * *
@ * * * * * * *
* * * * @ * * *
* @ * * * * * *
* * * * * * * @
* * @ * * * * *
* * * * * * @ *
* * * @ * * * *
* * * * * @ * *
* @ * * * * * *
* * * * * * @ *
@ * * * * * * *
* * @ * * * * *
* * * * @ * * *
* * * * * * * @
* * * @ * * * *
* * * * * @ * *
* @ * * * * * *
* * * * * * @ *
@ * * * * * * *
* * * @ * * * *
* * * * * * * @
* * * * @ * * *
* * @ * * * * *
* * * * * @ * *
* * @ * * * * *
@ * * * * * * *
* * * * * * @ *
* * * * @ * * *
* * * * * * * @
* @ * * * * * *
* * * @ * * * *
* * * * * @ * *
* * @ * * * * *
@ * * * * * * *
* * * * * * * @
* * * @ * * * *
* @ * * * * * *
* * * * * * @ *
* * * * @ * * *
* * * * * @ * *
* * @ * * * * *
@ * * * * * * *
* * * * * * * @
* * * * @ * * *
* @ * * * * * *
* * * @ * * * *
* * * * * * @ *
* * * * * @ * *
* * @ * * * * *
* * * * @ * * *
* * * * * * @ *
@ * * * * * * *
* * * @ * * * *
* @ * * * * * *
* * * * * * * @
* * * * * @ * *
* * @ * * * * *
* * * * @ * * *
* * * * * * * @
@ * * * * * * *
* * * @ * * * *
* @ * * * * * *
* * * * * * @ *
* * * * * @ * *
* * @ * * * * *
* * * * * * @ *
* @ * * * * * *
* * * @ * * * *
* * * * * * * @
@ * * * * * * *
* * * * @ * * *
* * * * * @ * *
* * @ * * * * *
* * * * * * @ *
* @ * * * * * *
* * * * * * * @
* * * * @ * * *
@ * * * * * * *
* * * @ * * * *
* * * * * @ * *
* * @ * * * * *
* * * * * * @ *
* * * @ * * * *
@ * * * * * * *
* * * * * * * @
* @ * * * * * *
* * * * @ * * *
* * * * * @ * *
* * * @ * * * *
@ * * * * * * *
* * * * @ * * *
* * * * * * * @
* @ * * * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * @ * *
* * * @ * * * *
* @ * * * * * *
* * * * * * * @
* * * * @ * * *
* * * * * * @ *
@ * * * * * * *
* * @ * * * * *
* * * * * @ * *
* * * @ * * * *
* * * * * * @ *
@ * * * * * * *
* * @ * * * * *
* * * * @ * * *
* @ * * * * * *
* * * * * * * @
* * * * * @ * *
* * * @ * * * *
* * * * * * @ *
@ * * * * * * *
* * * * * * * @
* @ * * * * * *
* * * * @ * * *
* * @ * * * * *
* * * * * @ * *
* * * * * * * @
* @ * * * * * *
* * * @ * * * *
@ * * * * * * *
* * * * * * @ *
* * * * @ * * *
* * @ * * * * *
* * * * * * @ *
@ * * * * * * *
* * @ * * * * *
* * * * * * * @
* * * * * @ * *
* * * @ * * * *
* @ * * * * * *
* * * * @ * * *
* * * * * * @ *
* @ * * * * * *
* * * @ * * * *
@ * * * * * * *
* * * * * * * @
* * * * @ * * *
* * @ * * * * *
* * * * * @ * *
* * * * * * @ *
* @ * * * * * *
* * * * * @ * *
* * @ * * * * *
@ * * * * * * *
* * * @ * * * *
* * * * * * * @
* * * * @ * * *
* * * * * * @ *
* * @ * * * * *
@ * * * * * * *
* * * * * @ * *
* * * * * * * @
* * * * @ * * *
* @ * * * * * *
* * * @ * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * * * @
* @ * * * * * *
* * * * @ * * *
@ * * * * * * *
* * * * * @ * *
* * * @ * * * *
* * * * * * @ *
* * * @ * * * *
* @ * * * * * *
* * * * @ * * *
* * * * * * * @
@ * * * * * * *
* * @ * * * * *
* * * * * @ * *
* * * * * * @ *
* * * @ * * * *
* @ * * * * * *
* * * * * * * @
* * * * * @ * *
@ * * * * * * *
* * @ * * * * *
* * * * @ * * *
* * * * * * @ *
* * * * @ * * *
* * @ * * * * *
@ * * * * * * *
* * * * * @ * *
* * * * * * * @
* @ * * * * * *
* * * @ * * * *
* * * * * * * @
* @ * * * * * *
* * * @ * * * *
@ * * * * * * *
* * * * * * @ *
* * * * @ * * *
* * @ * * * * *
* * * * * @ * *
* * * * * * * @
* @ * * * * * *
* * * * @ * * *
* * @ * * * * *
@ * * * * * * *
* * * * * * @ *
* * * @ * * * *
* * * * * @ * *
* * * * * * * @
* * @ * * * * *
@ * * * * * * *
* * * * * @ * *
* @ * * * * * *
* * * * @ * * *
* * * * * * @ *
* * * @ * * * *
* * * * * * * @
* * * @ * * * *
@ * * * * * * *
* * @ * * * * *
* * * * * @ * *
* @ * * * * * *
* * * * * * @ *
* * * * @ * * *
92