leetcode-52. N-Queens II

来源:互联网 发布:老备案域名出售 编辑:程序博客网 时间:2024/05/18 14:43

Follow up for N-Queens problem.

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

题意解析:

好吧这题和N-Queens一样,甚至还简单了,思路可以参考我之前写的这篇博客leetcode-51. N-Queens,这里直接给出代码了:

public class Solution {    private int result = 0;    public int totalNQueens(int n) {        int[] queens = new int[n];        backTracking(queens, n, 0);        return result;    }    public void backTracking(int[] queens, int n, int row){          for(int col = 0; col < n; col++){              if(check(queens, n, row, col)){                  queens[row] = col;                  if(row == n - 1){                      result++;                    queens[row] = 0;                      return;                  }                  backTracking(queens, n, row + 1);                  queens[row] = 0;              }          }      }      public boolean check(int[] queens, int n, int row, int col){          for(int i = 0; i < row; i++){              //三种情况不成立:正斜线(q[i]-i=q[j]-j),反斜线(q[i]+i=q[j]+j),列相等,注意这里行是不可能相等的              if(queens[i] == col || queens[i] + i == col + row || queens[i] - i == col - row){                  return false;              }          }          return true;      }}

噫!LeetCode正在修复运行时间分布图,如果我以后想起来的话,这个图片会改掉的。

1 0
原创粉丝点击