52. N-Queens II
N-皇后问题(n*n棋盘上,放n个皇后,要求每一行,每一列,每一斜线都不能同时出现两个皇后)。统计一共有多少种方法。
解决:Backtracking.
添加pos变量:用来记录前几行皇后的位置
class Solution { private: int cnt; public: void helper(vector<int> &pos, int row, int n) { if (row==n) ++cnt; else { for (int i=0; i<n; ++i) { bool flag = true; for (int j=0; j<row && flag; ++j) { if (abs(i-pos[j]) == row-j || pos[j]==i) flag = false; } if (flag) { pos[row] = i; helper(pos, row+1, n); pos[row] = -1; } } } } int totalNQueens(int n) { cnt = 0; vector<int> pos(n, -1); helper(pos, 0, n); return cnt; } };