N-Queens II
2015-01-15 10:17
106 查看
class Solution { public: Solution():cnt(0){} int cnt; bool isValide(const vector<int>& pos) { for(int i=0;i<pos.size();++i) { for(int j=i+1;j<pos.size();++j) { int diff=pos[j]-pos[i]; if(diff<0) { diff=-diff; } if(diff==(j-i)) { return false; } } } return true; } void mpermulate(int start,vector<int>& pos,vector<int>& origin) { if(start==origin.size()) { if(isValide(pos)) { cnt++; } return; } //提前结束 if(!isValide(pos)) { return; } for(int i=start;i<origin.size();++i) { int tmp=origin[i]; origin[i]=origin[start]; origin[start]=tmp; pos.push_back(origin[start]); mpermulate(start+1,pos,origin); pos.pop_back(); tmp=origin[i]; origin[i]=origin[start]; origin[start]=tmp; } } int totalNQueens(int n) { vector<int> pos; vector<int> origin; for(int i=0;i<n;++i) { origin.push_back(i); } mpermulate(0,pos,origin); return cnt; } };
与N-Queens做法一样,甚至更简单,只需要统计合法的个数就行了,但感觉应该还有更优的做法,欢迎分享更快的做法
相关文章推荐
- N-Queens II
- [leetcode]N-Queens II
- Leetcode: N-Queens II
- 【N皇后&DFS】N-Queens II
- leetcode - N-Queens II
- [Leetcode] N-Queens II
- LeetCode刷题笔录N-Queens II
- LeetCode My solution: N-Queens II
- [LeetCode] N-Queens II
- Leetcode#52 N-Queens II
- [Leetcode] 52. N-Queens II
- LeetCode_52---N-Queens II
- [LeetCode] N-Queens II
- 52. N-Queens II (Graph; WFS)
- Leetcode204: N-Queens II
- LeetCode 52. N-Queens II
- Leetcode: N-Queens II
- N-Queens II
- Leetcode 51. N-Queens && 52. N-Queens II(Hard)
- LeetCode | 52.N-Queens II