八皇后 問題 回溯算法

#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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章