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

leetcode-51-N-Queens II

2017-08-13 21:31 253 查看

问题

题目:[leetcode-51]

思路

dfs注意剪枝。恢复状态。

代码

class Solution {
public:
int totalNQueens(int n) {
vector<int> visited;
int ans = 0;
dfs( n, 0, visited, ans );
return ans;
}
private:
void dfs( int n, int cur, vector<int>& visited, int& ans ){
if( cur == n ) ++ans;
else{
for(int k = 0; k < n; ++k){
if( valid(cur, k, visited) ){
visited.push_back( k );
dfs( n, cur+1, visited, ans );
visited.pop_back();
}
}
}
}// dfs

bool valid( int x, int y, vector<int>& visited ){
int sz = visited.size();
for(int u = 0; u < sz; ++u){
int v = visited[u];

// same colume
if( y == v ) return false;

// same diag
if( abs(x-u) == abs(y-v) ) return false;
}
return true;
}// valid
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: