等一下,先打卡再做题
受伤的皇后
#include<stdio.h>
#include<math.h>
#include<stdilo.h>
int a[10];
int n;
int count;
int check(int r,int c){
for(int i=0;i<r;i++){
if(a[i]==c){
return 0;
}
if(abs(r-i)<3&&abs(r-i)==abs(a[i]-c)){
return 0;
}
}
return 1;
}
void dfs(int r){
if(r==n){
count++;
return;
}
for(int c=0;c<n;c++){
if(check(r,c)){
a[r]=c;
dfs(r+1);
a[r]=0;
}
}
}
int main(){
scanf("%d",&n);
dfs(0);
printf("%d",count);
return 0;
}