#include<stdio.h>
int tot;
int n;
int c[110];
void serch(int h)
{
if(h==n)
tot++;//遞歸的邊界
else
{
for(int i=0;i<n;i++)
{
int ok=1;
c[h]=i;//將第h行的皇后放在i列
for(int j=0;j<h;j++)
{
if(c[h]==c[j]||h-c[h]==j-c[j]||h+c[h]==j+c[j])//這裏作爲放入皇后的判斷 這裏可以看出根據不同的座標來判斷皇后是否會遭到攻擊
{
ok=0;<span style="white-space:pre"> </span>//遞歸的循環部分
break;
}
}
if(ok)
{
serch(h+1);//如果合法繼續遞歸
}
}
}
}
int main()
{
scanf("%d",&n);//n爲皇后數目
tot=0;
serch(0);
printf("%d\n",tot);
return 0;
}
八皇后 問題 回溯算法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.