您的位置:首页 > 产品设计 > UI/UE

leetcode 127: N-Queens II

2013-04-05 16:39 127 查看
N-Queens
IIMar
20 '12

Follow up for N-Queens problem.

Now, instead outputting board configurations, return the total number of distinct solutions. A good optimization example: when the request result is simplified, we may use reduced data struct to save time and space.



won't pass the big dataset until use one dimension array to replace the matrix in queen I.

class Solution {
public:
int totalNQueens(int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<int> board(n, -1);
int sum = 0;
queenRec(board, 0, sum);
return sum;
}
private:
void queenRec(vector<int>& board, int level, int & sum) {
int n = board.size();
if(level==n) {
++sum;
return;
}

for(int i=0; i<n; i++) {
if(check(board, level, i)) {
board[level] = i;
queenRec(board, level+1, sum);
board[level] = -1;
}
}
}

bool check(const vector<int>& cur, int row, int col) {
int n= cur.size();
for(int i=0; i<row; i++) {
if(cur[i]==col || row-i == abs(col-cur[i]) ) return false;
}
return true;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: