关于八皇后问题


#include<stdio.h>
int val[8][8]={0},count=0;
bool judge(int row,int col)//对棋盘进行判断如果违反规则就返回错误
{
	int i,j;
    for(i=0;i<row;i++)
    {
    	if(val[i][col]==1)//判断当前列
    		return false;
	}
	for(i=row,j=col;i>=0&&j>=0;i--,j--)//判断正对角线
	{
		if(val[i][j]==1)
		return false;
	}
		for(i=row,j=col;i>=0&&j<8;i--,j++)//判断反对角线
	{
		if(val[i][j]==1)
		return false;
	}
	return true;
}
void Putqueen(int row)
{
	int i;
	if(row==8)//这时棋盘走完进行计数
	{
		count++;
		return;
	 } 
	for(i=0;i<8;i++)
	{
		if(judge(row,i))
		{
			val[row][i] = 1;	//标记 
			Putqueen(row + 1);		//下一层 
			val[row][i] = 0;	//去标记 
		}
	}
}
int main()
{
	Putqueen(0);
	printf("%d\n",count);
	return 0;
 } 
posted @ 2016-09-20 21:12  考研小黑  阅读(2)  评论(0编辑  收藏  举报