#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型 the n
* @return int整型
*/
int count = 0;
bool Isfit(vector<vector<bool>>& Pos, int n, int i, int j) {
//检查当前(i,j)皇后与其他皇后是否有冲突;
for (int l = 0; l < n; l++) {
if (l == i) continue;
if (Pos[l][j] == true) return false;
}
for (int k = 0; k < n; k++) {
if (k == j) continue;
if (Pos[i][k] == true) return false;
}
for(int m=1;m<n;m++){
if(i-m>=0 && j+m<=n-1) if(Pos[i-m][j+m]==1) return false;
if(i+m<=n-1 && j-m>=0) if(Pos[i+m][j-m]==1) return false;
if(i+m<=n-1 && j+m<=n-1) if(Pos[i+m][j+m]==1) return false;
if(i-m>=0 && j-m>=0) if(Pos[i-m][j-m]==1) return false;
}
return true;
}
bool IsValid(vector<vector<bool>>& Pos, int n, int i, int j) {
if(Isfit(Pos, n, i, j)==false) {cout<<"i="<<i<<",j="<<j<<" 编号:"<<1<<"count:"<<count<<"\n";return false;}
if(Isfit(Pos, n, i, j)==true && j==n-1) {cout<<"i="<<i<<",j="<<j<<" 编号:"<<2<<"count:"<<count<<"\n";count++;return true;}
if(Isfit(Pos, n, i, j)==true){
cout<<"i="<<i<<",j="<<j<<" 编号:"<<3<<"count:"<<count<<"\n";
for(int row=0;row<n;row++){
//指定j+1列
Pos[row][j+1] =true;
IsValid(Pos,n,row,j+1);
Pos[row][j+1] =false;
// if(IsValid(Pos,n,row,j+1)) return true;
// else Pos[row][j+1] =false;
}
return false;
}
return false;
}
int Nqueen(int n) {
// write code here
vector<vector<bool>> Pos(n, vector<bool>(n, false));
for (int i = 0; i < n; i++) {
Pos[i][0] = true;
IsValid(Pos, n, i, 0);
// if (IsValid(Pos, n, i, 0)) count++;
Pos[i][0] = false;
}
return count;
}
};