// 八皇后问题
#include <iostream>
using namespace std;
#define N 4
#define M N-1
int a[N][N]={0} ;
void display()
{
int i ,j ;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
if(a[i][j]==1)
cout<<"("<<i<<","<<j<<")"<<endl ;
}
}
int valid1(int m,int n) //判断行
{
int j ;
for(j=0;j<n;j++)
{
if(a[m][j]==1) return 0 ;
}
for(j=n+1;j<N;j++)
{
if(a[m][j]==1) return 0 ;
}
return 1 ;
}
int valid2(int m,int n) //判断列
{
int i ;
for(i=0 ; i<m ;i++)
{
if(a[i][n]==1) return 0 ;
}
for(i=m+1;i<N;i++)
{
if(a[i][n]==1) return 0;
}
return 1 ;
}
int valid3(int m,int n) //判断正对角线
{ int i;
for(i=-M;i<0;i++)
{
if((m-i)>=0&&(m-i)<=M&&(n-i)>=0&&(n-i)<=M)
{
if(a[m-i][n-i]==1) return 0 ;
}
}
for(i=1;i<N;i++)
{
if((m-i)>=0&&(m-i)<=M&&(n-i)>=0&&(n-i)<=M)
{
if(a[m-i][n-i]==1) return 0 ;
}
}
return 1;
}
int valid4(int m,int n) //判断负对角线
{ int i;
for(i=-M;i<0;i++)
{
if((m+i)>=0&&(m+i)<=M&&(n-i)>=0&&(n-i)<=M)
{
if(a[m+i][n-i]==1) return 0 ;
}
}
for(i=1;i<N;i++)
八皇后问题 来自淘豆网m.daumloan.com转载请标明出处.