N皇后问题就是N层循环,我们用递归解决
#include<bits/stdc++.h>
using namespace std;
int queen[100],n;
void nqueen(int k)
{
if(k==n+1)
{
for(int i=1;i<=n;i++)
printf("%-4d",queen[i]);
cout<<endl;
return ;
}
for(int i=1;i<=n;i++) //要摆的列
{
int j;
for(j=1;j<k;j++)
if(queen[j]==i || abs(queen[j]-i)==abs(k-j))
break;
if(j==k)
queen[k]=i,nqueen(k+1);
}
}
int main()
{
cin>>n;
nqueen(1);
}