[leetcode] N-Queens II

Follow up for N-Queens problem.

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

https://oj.leetcode.com/problems/n-queens-ii/

思路:参考 N-Queens ,只统计个数即可。


public class Solution {
	public int totalNQueens(int n) {
		if (n <= 0)
			return 0;
		int[] perm = new int[n];
		slove(perm, 0, n);

		return count;
	}

	private int count = 0;

	private void slove(int[] perm, int cur, int n) {
		if (cur == n) {
			count++;
		} else {
			int i;
			for (i = 0; i < n; i++) {
				int j;
				boolean ok = true;
				for (j = 0; j < cur; j++) {
					if (perm[j] == i || perm[j] - j == i - cur
							|| perm[j] + j == i + cur)
						ok = false;
				}
				if (ok) {
					perm[cur] = i;
					slove(perm, cur + 1, n);
				}

			}

		}

	}

	public static void main(String[] args) {
		System.out.println(new Solution().totalNQueens(8));

	}
}



你可能感兴趣的:(java,LeetCode,backtracking)