N皇后 C

问题描述:
N皇后 C_第1张图片

#include
using namespace std;
int col[100];//第i行的皇后存取在第clo[i]列上 
int sum=0;
bool judge(int rows,int cols)
{
	for(int i=1;i<rows;i++){//遍历该行上面的行数 
		if(col[i]==cols||abs(rows-i)==abs(cols-col[i])){
			return false;
		} 
	}
	return true;
}
void Huang(int t,int n)
{
	if(t==n+1){
		sum++;
	}//遍历完棋盘女皇加1
	else{
		for(int i=1;i<=n;i++){
			col[t]=i;
			if(judge(t,col[t])){ //如能找到皇后的位子,递归下一行 
				Huang(t+1,n); 
			}
		} 	
	}
}
int main()
{
	int n;//皇后数量 
	cin>>n;
	Huang(1,n);//从第一行开始 
	cout<<sum;
	return 0;
	 
} 

你可能感兴趣的:(N皇后 C)