题目来源:
https://leetcode.com/problems/n-queens/
题意分析:
这是一个N-后问题。在一个N×N的国际象棋板上放N个皇后使得这些皇后使得他们互相不能攻击。也就是一个皇后的行列和斜都没有其他的皇后。返回所有满足上述条件的所有结果。
题目思路:
这题和前面的数独类似。首先要确定添加一个皇后的时候判断是否符合条件。利用回溯法每行或者每列添加皇后。
代码(python):
class Solution(object): def solveNQueens(self, n): """ :type n: int :rtype: List[List[str]] """ def isqueens(depth,j): for i in range(depth): if board[i] == j or abs(depth - i) == abs(board[i] - j): return False return True def dfs(depth,row): if depth == n: ans.append(row);return for i in range(n): if isqueens(depth,i): board[depth]= i dfs(depth + 1,row + ['.'*i + 'Q' + '.'*(n - i - 1)]) board = [-1 for i in range(n)] ans = [] dfs(0,[]) return ans
转载请注明出处:http://www.cnblogs.com/chruny/p/4968648.html