c语言
# include<stdio.h>
# include<math.h>
# define max 8
int queen[max],sum=0;
int check(int n){
int i;
for(i=0;i<n;i++){
if(queen[n]==queen[i]||abs(queen[n]-queen[i])==(n-i))
return 0;//当前位置不满足
}
return 1;//当前位置满足
}
void put(int n){ //n为横坐标
int check(int n);
void show();
int i;
for(i=0;i<max;i++){
queen[n]=i;
if(check(n)){
if(n==max-1) {//棋盘摆满,输出结果
show();
}
else put(n+1);//否则,摆放下一个位置
}
}
}
void show(){
int i;
printf("(");
for(i=0;i<max;i++){
printf("%d ",queen[i]);
}
sum++;//解的个数
printf(")\n");
}
int main(){
put(0);
printf("%d\n",sum);
return 0;
}