class Solution {
private:
int total=0;
void solve(vector<string> &cur,int row,int n)
{
if(row==n)
{
total++;
return;
}
else
{
for(int i=0;i<n;i++)
{
if(isvalid(cur,row,i,n))
{
cur[row][i]='Q';
solve(cur,row+1,n);
cur[row][i]='.';
}
}
}
}
bool isvalid(vector<string> &cur,int r,int c,int n)
{
//检查这一列
for(int i=0;i<r;i++)
{
if(cur[i][c]=='Q')
return false;
}
//检查45度
for(int i=r,j=c;i>=0&&j>=0;i--,j--)
{
if(cur[i][j]=='Q')
return false;
}
//检查135度角
for(int i=r,j=c;i>=0&&j<n;i--,j++)
{
if(cur[i][j]=='Q')
return false;
}
return true;
}
public:
int totalNQueens(int n) {
vector<string> cur(n,string(n,'.'));
solve(cur,0,n);
return total;
}
};
52. N-Queens II
最新推荐文章于 2021-01-22 11:28:53 发布