• [LeetCode]题解(python):051-N-Queens


    题目来源:

      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
    View Code

    转载请注明出处:http://www.cnblogs.com/chruny/p/4968648.html

  • 相关阅读:
    协方差矩阵
    Adobe Photoshop CS6下载安装
    等差数列
    照片产尺寸
    移动立方体算法
    float与double的范围和精度
    C/C++运算符优先级
    通过 Windows API 获取鼠标位置等状态信息
    VC++ 获取鼠标状态,获取鼠标弹起消息
    python动态给对象或者类添加方法
  • 原文地址:https://www.cnblogs.com/chruny/p/4968648.html
Copyright © 2020-2023  润新知