Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
Solution:
class Solution: # @return an integer def totalNQueens(self, n): board = [] for i in range(0,n): temp = [] for j in range(0,n): temp.append(False) board.append(temp) return self.countQueens(board,0) def countQueens(self, board, row): if row == len(board): return 1 solutions = 0 for i in range(0,len(board)): if self.canPutQueen(board,row,i): board[row][i] = True solutions += self.countQueens(board, row+1) board[row][i] = False return solutions def canPutQueen(self, board, row,column): for i in range(0,row): if board[i][column]: return False if column-(row-i)>=0 and board[i][column-(row-i)]: return False if column+(row-i)<len(board) and board[i][column+(row-i)]: return False return True
No comments :
Post a Comment