(回溯法)N皇后问题
#include <stdio.h>
#include <math.h>
#define N 6 //N皇后
int a[N]; //记录皇后位置列号
int ans=0;//记录有多少种答案
int judge(int k){
int i;
for(i=0;i<k;i++){
if(abs(a[i]-a[k])==k-i||a[k]==a[i]){
return -1;
}
}
return 1;
}
int fun(int n){
// printf("%d ",n);
int i,j;
if(n>=N){
ans++;
for(i=0;i<N;i++){
printf("%d ",a[i]);
}
printf("\n");
}
else{
for(j=0;j<N;j++){
a[n] = j;
if(judge(n)==1){
fun(n+1);
}
}
}
return ans;
}
int main(){
ans = fun(0);
printf("有%d种可行性",ans);
return 0;
}