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]; } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
leetCode 52.N-Queens II (n皇后问题II) 解题思路和方法
原文地址:http://blog.csdn.net/xygy8860/article/details/46861817