c: #include <stdio.h>
#include <stdlib.h>
int result=0;
void queen(int *chess,int len,int n){
if(n==len){
result++;
}else{
int flag=0;
for(int i=0;i<len;i++){
flag=1;
for(int j=0;j<n;j++){
if(abs(n-j)==abs(i-chess[j]) || chess[j]==i){
flag=0;
break;
}
}
if(!flag)
continue;
chess[n]=i;
queen(chess,len,n+1);
chess[n]=0;
}
}
}
int main(void){
int n;
int *chess;
scanf("%d",&n);
chess=(int*)malloc(sizeof(int)*n);
queen(chess,n,0);
printf("result = %d \n",result);
return 0;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。