#include <stdio.h>
#include <math.h>
#define N 4
int q[N + 1];
int answer = 0;
int check(int j){
int i;
for (i=1;i<j;i++){
if(q[i] == q[j] || abs(i-j) == abs( q[i] - q[j])){
return 0;
}
}
return 1;
}
void showLog(){
int i;
printf("%d 皇后-方案%d:", N, answer);
for(i = 1; i<= N; i++){
printf("%d ",q[i]);
}
printf("\n");
}
void queen(int j){
int i;
for(i = 1; i <= N; i++){
q[j] = i;
if(check(j)){
if(j == N){
answer = answer + 1;
showLog();
}else{
queen(j + 1);
}
}
}
}
int main () {
printf("递归算法-回溯-N皇后 - c.jsrun.net.\n");
queen(1);
return 0;
}