Queens II (n皇后问题II) 解题思路和方法

N-Queens II

Follow up for N-Queens problem.

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

思路:解决了上题,这题也就迎刃而解,或者说这题要不上题还要简单一些。

具体代码如下:

public class Solution {int count = 0;public int totalNQueens(int n) {int[] x = new int[n];queens(x, n, 0);return count;}void queens(int[] x,int n,int row){for(int i = 0; i < n; i++){if(check(x,n,row,i)){//判断合法x[row] = i;//将皇后放在第row行,,第i列if(row == n-1){//如果是最后一行,则输出结果count++;x[row] = 0;//回溯,寻找下一个结果return;}queens(x, n, row+1);//寻找下一行x[row] = 0;//回溯}}}/** * @param x 数组解 * @param n 棋盘长宽 * @param index 当前放置行 * @param i 当前放置列 * @return */boolean check(int[] x,int n,int row, int col){for(int i = 0; i < row; i++){if(x[i] == col || x[i] + i == col + row || x[i] – i == col – row)return false;}return true;}}

绝招:这题还有一个非常简单的解法,不看下面代码你能想出来吗?

—————————————————————————————

代码如下:

public class Solution {//棋盘长宽在10之内的全部结果数int[] x = new int[]{0,1,0,0,2,10,4,40,92,352,724};public int totalNQueens(int n) {return x[n];}}

版权声明:本文为博主原创文章,未经博主允许不得转载。

会让你的心态更平和更坦然,也会让你心无旁骛,更会让你的心灵得到解脱和抚慰。

Queens II (n皇后问题II) 解题思路和方法

相关文章:

你感兴趣的文章:

标签云: