#include<bits/stdc++.h>
using namespace std;
int number =0;
bool isQueen(int* queeny,int n){
for(int i=0;i<n;i++){
if(queeny[i]==queeny[n]){
return false;
}
if(abs(queeny[i]-queeny[n])==abs(i-n)){
return false;
}
}
return true ;
}
void queeny(int* queen,int n,int pos){
for(int i=0;i<n;i++){
queen[pos]=i;
if(isQueen(queen,pos)){
if(pos==n-1){
number++;
return ;
}else{
queeny(queen,n,pos+1);
}
}
}
return ;
}
int main(){
int n;
int queen[100+1];
cin >> n;
queeny(queen,n,0);
cout << number <<endl;
return 0;
}
皇后问题--回溯法
最新推荐文章于 2022-04-03 11:42:54 发布