zoukankan      html  css  js  c++  java
  • N-Queens II

    Link:http://oj.leetcode.com/problems/n-queens-ii/

    Follow up for N-Queens problem.

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

     1 public class Solution {
     2     public int num = 0;
     3     public int totalNQueens(int n) {
     4         if (n < 1)
     5             return 0;
     6         num = 0;
     7         int[] queens = new int[n + 1];
     8         for (int i = 1; i <= n; i++) {
     9             queens[1] = i;
    10             dfs(2, n, queens);
    11         }
    12         return num;
    13     }
    14     public void dfs(int col, int size, int[] queens) {
    15         if (col > size) {
    16             num++;
    17             return;
    18         }
    19         // here i means row number;
    20         for (int i = 1; i <= size; i++) {
    21             if (isValid(i, col, queens)) {
    22                 queens[col] = i;
    23                 dfs(col + 1, size, queens);
    24                 queens[col] = 0;
    25             }
    26         }
    27     }
    28 
    29     public boolean isValid(int row, int col, int[] queens) {
    30         for (int i = 1; i < col; i++) {
    31             // queens should not be in the same row,
    32             // queens should not be placed in the duijiaoxian...
    33             // which means |x1-x2|==|y1-y2|
    34             if (queens[i] != 0
    35                     && (queens[i] == row || (Math.abs(i - col) == Math
    36                             .abs(queens[i] - row))))
    37                 return false;
    38         }
    39         return true;
    40     }
    41 }
  • 相关阅读:
    输入挂
    最长递增子序列nlogn的做法
    lca 倍增模版
    讨厌字符串
    js的事件处理与闭包:
    http
    html的语义化
    js性能优化
    js的缓存
    字面量声明和函数式声明
  • 原文地址:https://www.cnblogs.com/Altaszzz/p/3713041.html
Copyright © 2011-2022 走看看