//回溯算法
#include<iostream>
#include<memory.h>
#include<math.h>
using namespace std;
int a[101];
int n=4;
int sum=0,flag=0;
void digui(int k)
{
if(k==n+1)
{
sum++;
return;
}
for(int i=1;i<=n;i++)
{
a[k]=i;
flag=1;
for(int j=1;j<k;j++)
{
if(a[k]==a[j]||abs(k-j)==abs(a[k]-a[j]))
{
flag=0;
break;
}
}
if(flag==1)
digui(k+1);
}
}
int main()
{
sum=0;
digui(1);//递归的入口是1
cout<<sum<<endl;
}
N皇后问题(递归做法)
最新推荐文章于 2021-03-27 12:33:11 发布