#include<stdio.h>
#include<cstdlib>
#include<iostream>
using namespace std;
const int N=0;
int a[N];
int cnt,n;//全局变量默认值为0
//a[i]表示第i行上的皇后放于第a[i]列上,
//假设a[3]=7,表示第三行的皇后在第七列
bool check(int x,int y)
{
for(int i=1;i<=x;i++)
{
if(a[i]==y) return false;
if(i+a[i]==x+y) return false;
if(i-a[i]==x-y) return false;
}
return true;
}
void dfs(int row)//第row行皇后放在何处
{
if(row==n+1)//n皇后问题
{
//产生了一组解
cnt++;//cnt 计数器
return ;
}
for(int i=1;i<=n;i++)
{
if(check(row,i))//check第row行能不能在i上
{
a[row]=i;
dfs(row+1);
a[row]=0;
}
}
}
int main()
{
cin>>n;
dfs(1);
cout<<cnt;
return 0;
}
N皇后(输出多少个皇后)
最新推荐文章于 2024-10-20 18:34:06 发布