Leetcode52: N-Queens II
2016-10-27 19:25
316 查看
Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
![](http://www.leetcode.com/wp-content/uploads/2012/03/8-queens.png)
题意:
依然是N皇后问题,只不过在上次的八皇后问题中,是需要输出每个棋盘的布局的,而这一题只需要输出所有的解的数目即可。
解法:
同上一次的回溯法,非递归实现。代码部分也是将上次保存输出棋盘的部分改成直接计数就可。
代码:
Now, instead outputting board configurations, return the total number of distinct solutions.
![](http://www.leetcode.com/wp-content/uploads/2012/03/8-queens.png)
题意:
依然是N皇后问题,只不过在上次的八皇后问题中,是需要输出每个棋盘的布局的,而这一题只需要输出所有的解的数目即可。
解法:
同上一次的回溯法,非递归实现。代码部分也是将上次保存输出棋盘的部分改成直接计数就可。
代码:
<span style="font-size:14px;">class Solution { public: int mmin=-100000; bool valid(int i, int j, int a[], int n){ for(int r=0; r<n; r++){ if(a[r]==j || abs(r-i)==abs(a[r]-j)){ return false; } } return true; } int totalNQueens(int n) { int count=0; int a ; for(int i=0; i<n; i++) a[i]=mmin; int i=0, j=0; while(i<n){ while(j<n){ if(valid(i, j, a, n)==true){ a[i]=j; j=0; break; } else{ j++; } } if(a[i]==mmin){ if(i==0) break; else{ i--; j=a[i]+1; a[i]=mmin; continue; } } if(i==n-1){ count++; j=a[i]+1; a[i]=mmin; continue; } i++; } return count; } };</span>
相关文章推荐
- LeetCode52:N-Queens II
- [LeetCode]52 N-Queens II
- Leetcode52 N-Queens II
- 8.18 [LeetCode 52] N-Queens II
- [Leetcode 92] 52 N-Queens II
- Leetcode 52 N-Queens II
- [Leetcode 52, Hard] N Queens II
- LeetCode52 N-Queens II
- LeetCode-52-N-Queens II 同前一题
- leetcode[52]:N-Queens II
- LeetCode 52 N-Queens II
- leetcode hard模式专杀之52 N-Queens II
- LeetCode52——N-Queens II
- leetcode-52-N-Queens II
- Leetcode 52 N-Queens II 回溯搜索
- leetcode[52]N-Queens II
- LeetCode 52 N-Queens II (DFS)
- Leetcode 52 N-Queens II
- LeetCode_52---N-Queens II
- [leetcode 52] N-Queens II