您的位置:首页 > 其它

LeetCode——052

2016-04-24 12:42 288 查看


/*

Follow up for N-Queens problem.

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



Subscribe to see which companies asked this question

*/

/*

解题思路:

跟上一个题很相似,甚至比上一个题目还要简单,只要求统计否和要求的个数,不需要记录结果

*/

class Solution {
public:
int totalNQueens(int n) {

string s(n,'.');

vector<string> vec(n,s);
int res=0;
dfs(0,vec,res);
return res;
}

void  dfs(int cur,vector<string>&vec,int&res){

if(cur==vec.size()){
++res;
return ;
}
for(int i=0;i<vec.size();i++){
if(isvalid(cur,i,vec)){
vec[cur][i]='Q';
dfs(cur+1,vec,res);
vec[cur][i]='.';
}
}

}

bool isvalid(int row,int col, vector<string>vec){

for(int i=0;i<row;i++){
for(int j=0;j<vec.size();j++){
if(vec[i][j]=='Q'){
if(j==col||(abs(i-row))==(abs(j-col)))return false;
}
}
}

return true;
}

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