#include<stdio.h>
#include<stdbool.h>
int a[8][8]={0};
int count;
void printArray()
{
int i,j;
for(i=0;i<8;i++){
for(j=0;j<8;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("\n");
}
bool SetQueen(int row,int col)
{
int i,j;
if(row==0){
a[row][col]=1;
return true;
}
for(i=0;i<row;i++){
if(a[i][col]==1){
return false;
}
}
for(i=row-1,j=col-1;i>=0&&j>=0;i--,j--){
if(a[i][j]==1){
return false;
}
}
for(i=row-1,j=col+1;i>=0&&j<8;i--,j++){
if(a[i][j]==1){
return false;
}
}
a[row][col]=1;
return true;
}
void set(int row)
{
int j;
if(row==8){
printArray();
count++;
}
for(j=0;j<8;j++){
if(SetQueen(row,j)){
set(row+1);
}
a[row][j]=0;
}
}
int main()
{
set(0);
printf("%d\n",count);
return 0;
}
八皇后问题(C语言)
最新推荐文章于 2024-07-22 00:02:32 发布