n×n的棋盘上放置n个不同行不同列不同斜线的皇后,是否有放置方案,有请输出可行的放置方案数。(同一条斜线上的任意两点的行间距 = 列间距)
#include<stdio.h>
int sum=0,n;
void Backtrack(int t,int *x){
if(t==n){
sum++;
}else{
int i=0;
while(i<n){
x[t]=i++;//x[行]=列
if(Place(t,x))Backtrack(t+1,x);
}
}
}
int Place(int k,int *x){
int j=0;
while(j<k){
if(k-j==abs(x[k]-x[j])||x[j++]==x[k])return 0;
}
return 1;
}
int main(){
scanf("%d",&n);
int x[n];
Backtrack(0,x);
printf("%d",sum);
}