Now, instead outputting board configurations, return the total number of distinct solutions.
同样是N皇后的问题,要求我们输出有几种结果,思路同 N-Queens是一样的,这里就不在赘述了,代码如下:
public class Solution { private int result = 0; public int totalNQueens(int n) { int[] colInRow = new int[n]; getTotalNQueens(0, n, colInRow); return result; } private void getTotalNQueens(int row, int n, int[] colInRow) { if(row == n) { result ++; } else { for(int i = 0; i < n; i++) { colInRow[row] = i; if(isValid(row, colInRow)) { getTotalNQueens(row + 1, n, colInRow); } } } } private boolean isValid(int row, int[] colInRow) { for(int i = 0; i < row; i++) { if(colInRow[i] == colInRow[row] || Math.abs(colInRow[i] - colInRow[row]) == row - i) return false; } return true; } }