class Solution {
public:
void helper(int row, int &res, int n, vector<int>& solution) {
if (row == n+1) {
++ res;
}
for (int i = 1; i <= n; ++ i) {
if (canPlace(row, i, solution)) {
solution[row-1] = i;
helper(row+1, res, n, solution);
solution[row-1] = -1;
}
}
}
bool canPlace(int row, int i, vector<int>& solution) {
for (int j = 1; j < row; ++ j) {
if (i == solution[j-1] || abs(i-solution[j-1]) == abs(row-j))
return false;
}
return true;
}
int totalNQueens(int n) {
vector<int> solution(n, -1);
int res = 0;
if (n < 1)
return res;
helper(1, res, n, solution);
return res;
}
};
N-QueensII : 4ms and short
最新推荐文章于 2015-07-17 10:21:56 发布