Papyrus在审判你 • 1年前
https://old.ynoip.cn/problem/discuss?id=1304
int N; int x[50]; int sum=0; bool judge(int k); void bt(int n); int Nqueen(int n){
N=n;
for(int i=1;i<=N;i++){
x[i]=0;
}
bt(1);
return sum;
} bool judge(int k){
for(int i=1;i<k;i++){
if(abs(k-i)==abs(x[k]-x[i])||x[i]==x[k]){
return false;
}
}
return true;
} void bt(int t){
if(t>N){
printf(" ");
for(int i=1;i<=N;i++){
printf(" %d ",x[i]);
}
printf("\n");
sum++;
}
else{
for(int j=1;j<=N;j++){
x[t]=j;
if(judge(t)){
bt(t+1);
}
}
}
} int main(){
int n,ans;
scanf("%d",&n);
ans=Nqueen(n);
if(ans==0){
printf("no solute!");
}
return 0;
} PS:程序很简单,难点主要在输出的调试上面。(Doge)
评论:
请先登录,才能进行评论