bahuanghou111

#include<stdio.h>
int map[8][8]={0};
int count=0;
int safe(int x,int y)
{
	int i;
	int j;
	for(i=0;i<8;i++)
	{
		if(map[i][y]!=0)
			return 0;
	}
	for(j=0;j<8;j++)
	{
		if(map[x][j]!=0)
			return 0;
	}
	for(i=x,j=y;i>=0&&j>=0;i--,j--)
	{
		if(map[i][j]!=0)
			return 0;
	}
	for(i=x,j=y;i>=0&&j<8;i--,j++)
	{
		if(map[i][j]!=0)
			return 0;
	}
	return 1;
}

void queen(int i)
{
	if(i==8)
	{
		count++;
		return;
	}
	for(int j=0;j<8;j++)
	{
		if(safe(i,j))
		{
			map[i][j]=1;
			queen(i+1);
			map[i][j]=0;
		}
	}
}
int main()
{
	queen(0);
	printf("%d",count);
	return 0;
}

 

posted on 2017-01-04 15:46  霸王程  阅读(85)  评论(0编辑  收藏  举报