LeetCode 题解(105): N-Queens II
来源:互联网 发布:看图软件mac 编辑:程序博客网 时间:2024/05/21 17:33
题目:
Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
题解:和N-Queen I是一道题的两种问法。
C++版:
class Solution {private: int results = 0; public: int totalNQueens(int n) { if(n == 0) return results; vector<int> location(n, -1); trace(location, 0, n); return results; } void trace(vector<int>& location, int level, int n) { if(level == n) { results++; return; } for(int i = 0; i < n; i++) { if(isValid(location, level, i)) { location[level] = i; trace(location, level + 1, n); location[level] = -1; } } } bool isValid(vector<int>& location, int row, int col) { for(int i = 0; i < row; i++) { if(location[i] == col || abs(row - i) == abs(location[i] - col)) return false; } return true; }};
Java版:
public class Solution { private int results = 0; public int totalNQueens(int n) { if(n == 0) return results; int[] location = new int[n]; for(int i = 0; i < n; i++) location[i] = -1; trace(location, n, 0); return results; } private void trace(int[] location, int n, int level) { if(level == n) { results++; return; } for(int i = 0; i < n; i++) { if(isValid(location, level, i)) { location[level] = i; trace(location, n, level + 1); location[level] = -1; } } } private boolean isValid(int[] location, int row, int col) { for(int i = 0; i < row; i++) { if(location[i] == col || Math.abs(row - i) == Math.abs(location[i] - col)) return false; } return true; }}
Python版:
class Solution: # @return a list of lists of string def totalNQueens(self, n): #results = 0 if n == 0: return 0 location = [-1 for i in range(n)] results = [0] def trace(location, n, level): if level == n: results[0] += 1 return for i in range(n): if isValid(location, level, i): location[level] = i trace(location, n, level+1) location[level] = -1 def isValid(location, row, col): for i in range(row): if location[i] == col or abs(row - i) == abs(location[i] - col): return False return True trace(location, n, 0) return results[0]
0 0
- LeetCode 题解(105): N-Queens II
- LeetCode 52. N-Queens II 题解(C++)
- LeetCode题解:N-Queens I and II
- LeetCode: N-Queens II
- LeetCode : N-Queens II
- [Leetcode] N-Queens II
- 【leetcode】N-Queens II
- LeetCode: N Queens II
- [LeetCode]N-Queens II
- LeetCode - N-Queens II
- LeetCode:N-Queens II
- 【leetcode】N-Queens II
- LeetCode:N-Queens II
- Leetcode: N-Queens II
- leetcode N-Queens II
- LeetCode | N-Queens II
- Leetcode: N-Queens II
- LeetCode N-Queens II
- JqGrid学习总结_10标题栏的checkbox
- 用fillzilla 修改Liunx服务器上的配置文件引起的java.lang.NoClassDefFoundError
- MySql将一个表的数据导入到另一个表
- RedHat Linux严重Bug将影响基于Haswell架构的服务器
- JqGrid学习总结_11 navButtonAdd
- LeetCode 题解(105): N-Queens II
- JQuery关于dialog的一些总结
- java中关于获取路径的总结
- JqGrid学习总结11——下拉框DataEven…
- JQuery获取和设置select下拉框的值
- jquery学习网页
- JqGrid学习总结12_排序
- HTML <a></a&…
- HTML table 元素