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

[Leetcode 92] 52 N-Queens II

2013-07-28 08:41 330 查看
Problem:

Follow up for N-Queens problem.

Now, instead outputting board configurations, return the total number of distinct solutions.

class Solution {
public:
int dim, *col, cnt;
vector<vector<string> > res;

int totalNQueens(int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
dim = n;
cnt = 0;

string s(n, '.');
col = new int
;
vector<string> tmp;
for (int i=0; i<n; i++) {
col[i] = -1;
tmp.push_back(s);
}

dfs(tmp, 0);

delete [] col;

return cnt;
}

private:
void dfs(vector<string> &s, int r) {
if (r == dim) {
cnt++;
return;
}

for (int i=0; i<dim; i++) {
if (col[i] == -1 && isValid(s, r, i)) {
col[i] = r;
s[r][i] = 'Q';
dfs(s, r+1);
s[r][i] = '.';
col[i] = -1;
}
}
}

bool isValid(vector<string> &s, int r, int c) {
for (int i=0; i<dim; i++) {
if ((col[i] != -1) && s[col[i]][i]=='Q'
&& ((i-c == r-col[i]) || (i-c == col[i]-r)))
return false;
}

return true;
}
};


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: