#include <stdio.h>
//判断能否放置皇后
int ok(int arr[8][8],int x,int y)
{
//判断横行
int i = 0,j = 0;
while(i < 8 && j < 8){
if(arr[x][i] == 1) return 0;
if(arr[i][y] == 1) return 0;
i++;
j++;
if(x + i < 8 && y + j < 8){
if(arr[x + i][y + j] == 1) return 0;
}
if(x + i < 8 && y - j >= 0){
if(arr[x + i][y - j] == 1) return 0;
}
if(x - i >= 0 && y + j < 8){
if(arr[x - i][y + j] == 1) return 0;
}
if(x - i >= 0 && y - j >= 0){
if(arr[x - i][y - j] == 1) return 0;
}
}
return 1;
}
void reset(int arr[8][8])
{
int i,j;
for(i = 0;i<8;i++){
for(j = 0;j<8;j++){
arr[i][j] = 0;
}
}
}
void print(int arr[8][8])
{
int i,j;
for(i=0;i<8;i++){
for(j=0;j<8;j++){
printf("%d ",arr[i][j]);
if(j == 7) printf("\n");
}
}
}
void queen(int arr[8][8],int m,int n)
{
int i,j;
int cnt = 0;
for(i = m;i < 8;i++){
for(j = n;j < 8;j++){
if(ok(arr,i,j)){
arr[i][j] = 1;
cnt++;
printf("i=%d,j=%d\n",i,j);
if(cnt >= 8){
print(arr);
reset(arr);
return;
}
}
}
}
reset(arr);
}
int main()
{
int m ,n;
int arr[8][8] = {};
print(arr);
for(m = 0;m< 8;m++){
for(n = 0;n < 8;n++){
queen(arr,m,n);
}
}
return 1;
}