[刷题]N-Queens II
来源:互联网 发布:鹏博士数据 编辑:程序博客网 时间:2024/06/01 22:46
[LintCode]N-Queens II
class Solution { /** * Calculate the total number of distinct N-Queen solutions. * @param n: The number of queens. * @return: The total number of distinct solutions. */ public static int sum; public int totalNQueens(int n) { sum = 0; ArrayList<Integer> list = new ArrayList<>(); helper(list, n); return sum; } /** * 递归方法 * @param list : 已确定的queen的位置 * @param n : queen的总个数 */ private void helper(ArrayList<Integer> list, int n) { // 退出条件,控制树的深度 if (list.size() == n) { sum++; // 找到一个解 return; } for (int i = 0; i < n; i++) { // 控制分支 if (!isValid(list, i)) { continue; } list.add(i); helper(list, n); list.remove(list.size() - 1); } return; } /** * 判断是queen是否可以相互攻击 * @param list : 已确定的queen的位置 * @param col : 新的一行中queen的位置 */ private boolean isValid(ArrayList<Integer> list, int col) { if (list.size() == 0) { return true; } for (int i = 0; i < list.size(); i++) { if (list.get(i) == col) { return false; } // 列 - 行 if (list.get(i) - i == col - list.size()) { return false; } // 列 + 行 if (list.get(i) + i == col + list.size()) { return false; } } return true; } };
0 0
- [刷题]N-Queens II
- N-Queens && N-Queens II
- LeetCode: N-Queens II
- LeetCode : N-Queens II
- [Leetcode] N-Queens II
- N-Queens II
- 【leetcode】N-Queens II
- LeetCode: N Queens II
- [LeetCode]N-Queens II
- N-Queens II
- N-Queens II
- LeetCode - N-Queens II
- LeetCode:N-Queens II
- N-Queens II
- N-Queens II
- 【leetcode】N-Queens II
- LeetCode:N-Queens II
- Leetcode: N-Queens II
- Ubuntu14搭建ML开发环境
- 欢迎使用CSDN-markdown编辑器
- 黑马程序员——C语言中的运算符
- 关于/dev/graphics/fb0拒绝访问的解决方案
- Linux____网络编程基础
- [刷题]N-Queens II
- 《IOS_C语言》指针
- 简单魔板[Special judge]
- Java中的装箱与拆箱
- HDU-2544 最短路
- super.getClass()
- C++的运算符重载 --http://blog.csdn.net/zgl_dm/article/details/1767201
- 做人要圆通、有魄力,做事要周全
- SSH架构的自定义filter