题目描述
N皇后问题研究的是将N个皇后放置在N×N的棋盘上,并且使皇后不能相互攻击。
现在给你一个整数N,求出N皇后问题的摆法的方案数。
输入
一个整数N。
1<=N<=15
输出
一个整数,N皇后的方案数。
样例输入
4
样例输出
2
参考代码:
#include<bits/stdc++.h>
using namespace std;
int The_length,Chessboard[14][14],sum;
int l[14],Diagonal_1[500],Diagonal_2[500];
void Search_and_trace_back(int Place){
if(Place>The_length){
sum++;return;
}for(int i=1;i<=The_length;i++){
if(l[i]==0&&Diagonal_1[Place-i+The_length]==0&&Diagonal_2[Place+i]==0){
Chessboard[Place][i]=1;l[i]=1;
Diagonal_1[Place-i+The_length]=1;
Diagonal_2[Place+i]=1;
Search_and_trace_back(Place+1);
Chessboard[Place][i]=0;l[i]=0;
Diagonal_1[Place-i+The_length]=0;
Diagonal_2[Place+i]=0;
}
}
}int main(){
cin>>The_length; Search_and_trace_back(1); cout<<sum;
}//If there are similarities, it is purely a coincidence, manual translation.