Follow up for N-Queens problem.

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

计算N皇后的合法解的数量。

解题思路:这次使用了更优化的方式判断棋盘上的冲突,abs(curr.row-row)==abs(curr.col-col)

board数组纪录每行的列的位置,如board[1]=3,代表第一行第三列上有皇后。

public class Solution {

    int[] board;
int res = 0;
public int totalNQueens(int n) {
board = new int[n];
helper(0,n);
return res;
} private void helper(int k,int n){
if(k>=n){
res++;
return;
}
for(int i=0;i<n;i++){
if(valid(k,i)){
board[k]=i;
helper(k+1,n);
}
}
return ;
} private boolean valid(int x, int y){
int row = 0;
while(row<x){
if(board[row]==y||Math.abs(x-row)==Math.abs(y-board[row])){
return false;
}
row++;
}
return true;
}
}

N-Queens II——Leetcode的更多相关文章

  1. Path Sum II - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Path Sum II - LeetCode 注意点 不要访问空结点 解法 解法一:递归,DFS.每当DFS搜索到新节点时,都要保存该节点.而且每当找出一 ...

  2. Subsets II - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Subsets II - LeetCode 注意点 有重复的数字 数组可能是无序的,要先排序 解法 解法一:递归,只需要在Subsets中递归写法的基础上 ...

  3. Permutations II - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Permutations II - LeetCode 注意点 不确定有几种排列 解法 解法一:因为有重复的数字所以排列的个数不确定几个,一直生成新的排列直 ...

  4. [Leetcode] n queens ii n皇后问题

    Follow up for N-Queens problem. Now, instead outputting board configurations, return the total numbe ...

  5. lintcode 中等题:N Queens II N皇后问题 II

    题目: N皇后问题 II 根据n皇后问题,现在返回n皇后不同的解决方案的数量而不是具体的放置布局. 样例 比如n=4,存在2种解决方案 解题: 和上一题差不多,这里只是求数量,这个题目定义全局变量,递 ...

  6. N-Queens And N-Queens II [LeetCode] + Generate Parentheses[LeetCode] + 回溯法

    回溯法 百度百科:回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标.但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步又一次选择,这样的走不通就退回再走的技术为回溯法 ...

  7. N-Queens II leetcode java

    题目: Follow up for N-Queens problem. Now, instead outputting board configurations, return the total n ...

  8. amazon oa1 - search in 2D array II [Leetcode] 240

    https://leetcode.com/problems/search-a-2d-matrix-ii/ 巧解题,矩阵本身等于了一个binary search tree,从中值开始走 时间复杂度 O( ...

  9. Combination Sum II [LeetCode]

    Problem description: http://oj.leetcode.com/problems/combination-sum-ii/ Basic idea: use recursive a ...

  10. Best Time to Buy and Sell Stock II [LeetCode]

    Problem Description: http://oj.leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/ Basic idea: ...

随机推荐

  1. android 实现垂直的ProgressBar

    I had recently come across the need for a vertical progress bar but was unable to find a solution us ...

  2. 使用PHP实现蜘蛛访问日志统计

    $useragent = addslashes(strtolower($_SERVER['HTTP_USER_AGENT'])); if (strpos($useragent, 'googlebot' ...

  3. Android 开发笔记——通过 Intent 传递类对象

    Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种 ...

  4. selenium+eclipse+python环境

    1.下载并安装jdk,配置环境变量: 2.下载并安装python,配置path系统环境变量:D:\Program Files\python34: 3.安装selenium,在安装好的python路径D ...

  5. VMware Workstation 11序列号一枚

    VMware Workstation 11序列号: 1F04Z-6D111-7Z029-AV0Q4-3AEH8

  6. CI 笔记4 (easyui 手风琴)

    添加父div标签,和子div标签 <div class="easyui-accordion" data-options="fit:true,border:false ...

  7. Oracle AWR报告指标全解析-11011552

    1-5 Top 5 Timed EventsWaits : 该等待事件发生的次数, 对于DB CPU此项不可用Times : 该等待事件消耗的总计时间,单位为秒, 对于DB CPU 而言是前台进程所消 ...

  8. hdu2962 Trucking (最短路+二分查找)

    Problem Description A certain local trucking company would like to transport some goods on a cargo t ...

  9. Linux 系统命令及其使用详解(大全)

    (来源: 中国系统分析员) cat cd chmod chown cp cut 1.名称:cat 使用权限:所有使用者 使用方式:cat [-AbeEnstTuv] [--help] [--versi ...

  10. js string操作总结

    var str = "0123456789"; console.log(str.substring(0)); //------------"0123456789" ...