话不多说,N皇后思想以及递归代码--> N皇后
非递归代码:
#include<iostream>
#include<math.h>
using namespace std;
bool Place(int *ar,int k)
{
for(int j = 1;j<k;++j)
{
if(ar[k] == ar[j] || abs(k-j) == abs(ar[k] - ar[j]))//那三个条件
{
return false;
}
}
return true;
}
void PrintAr(int *ar,int n)
{
for( int i=1;i<=n;++i)
{
for(int j= 1;j<=n;++j)
{
if(ar[j] == i)
{
cout<<"· ";
}
else
{
cout<<"※ ";
}
}
cout<<endl;
}
cout<<endl;
}
int main()
{
const int n = 4;
int ar[n+1]={0,0,0,0,0};
int k = 1;
ar[k] = 0;
while(k > 0)
{
ar[k]+=1;
while(ar[k] <= n && !Place(ar,k)) ar[k]+=1;//循环直到有合适的地方放皇后并且你还不能比4大,不然说明这一列没有地方