zoukankan      html  css  js  c++  java
  • [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

  • 相关阅读:
    关于学习netty的两个完整服务器客户端范例
    android-betterpickers
    ValueBar
    CircleDisplay
    JellyViewPager
    十天学习PHP之第二天
    android-測试so动态库(九)
    实习题
    android 编程小技巧(持续中)
    Codeforces Round #253 (Div. 2)——Borya and Hanabi
  • 原文地址:https://www.cnblogs.com/chruny/p/4968648.html
Copyright © 2011-2022 走看看