Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
Solution:
public class Solution { public int totalNQueens(int n) { return totalNQueens(new boolean[n][n], 0); } public int totalNQueens(boolean[][] board, int row) { if (row==board.length) return 1; int solutions = 0; for(int i=0; i < board.length; i++) { if(canPutQueen(board,row,i)) { board[row][i] = true; solutions += totalNQueens(board, row+1); board[row][i] = false; } } return solutions; } public boolean canPutQueen(boolean[][] board, int row, int column) { for(int i=0; i<row; i++) { if(board[i][column]) return false; if(column+i-row >=0 && board[i][column+i-row]) return false; if(column+row-i < board.length && board[i][column+row-i]) return false; } return true; } }
No comments :
Post a Comment