#include <stdio.h>
int Queen[8] = {0};
int count = 0;
void print(int queen[]){
for (int i = 0; i < 8; i++){
for(int j = 0; j < 8; j++){
if (j == queen[i]){
printf("Q");
}
else{
printf("#");
}
}
printf("\n");
}
printf("========\n");
}
int check(int line, int list){
for(int tempLine = 0; tempLine < line; tempLine++){
int tempRow = Queen[tempLine];
if (tempRow == list){
return 0;
}
if((tempRow + tempLine) == (line + list)){
return 0;
}
if((tempRow - tempLine) == (list - line)){
return 0;
}
}
return 1;
}
void eightQueen(int line){
for (int list = 0; list < 8; list++){
if (check(line, list)){
Queen[line] = list;
if (line == 7){
count++;
print(Queen);
Queen[line] = 0;
return;
}
eightQueen(line + 1);
Queen[line] = 0;
}
}
}
int main(){
eightQueen(0);
printf("一共%d种方法", count);
return 0;
}