怎么说呢,画图!!!!!!!!
画图理解超简单哦~
#include<cstdio>
#include<iostream>
using namespace std;
int p[1100]={0},count=0;
bool h[1100];
void f(int index,int n)//第index列
{
if(index==n+1)
{
count++;
return ;
}
for(int i=1;i<=n;i++)//第i行
{
if(!h[i])
{
p[index]=i;
h[i]=true;
bool flag=true;
for(int j=1;j<=index-1;j++)
{
if(index-j==abs(p[index]-p[j]))
{
flag=false;
break;
}
}
if(!flag)
{
h[i]=false;
continue;
}
else
{
f(index+1,n);
h[i]=false;
}
}
}
}
int main()
{
f(1,8);
cout<<count<<endl;
}