zoukankan      html  css  js  c++  java
  • 递归和回溯_leetcode51

    #coding=utf-8

    class Solution(object):
    def solveNQueens(self, n):
    """
    :type n: int
    :rtype: List[List[str]]
    """


    self.col = [False for i in range(n)]
    self.diaS = [False for i in range(2*n - 1)]
    self.diaN = [False for i in range(2*n - 1)]



    ans = []
    self.res = []


    self.putQueen(n,0,ans)

    print self.res



    # 尝试在一个n皇后的问题中,摆放第index行皇后的位置
    def putQueen(self,n,index,ans):
    if index == n:
    self.res.append(self.generateBoard(n,ans[0:]))
    # self.res.append(ans[0:])

    return

    # 尝试将第index行的皇后摆放在第i列
    for i in range(n):
    if not self.col[i] and not self.diaS[index+i] and not self.diaN[index-i+n-1]:

    ans.append(i)

    self.col[i] = True
    self.diaS[index+i] = True
    self.diaN[index-i+n-1] = True

    self.putQueen(n,index+1,ans)

    ans.pop()
    self.col[i] = False
    self.diaS[index + i] = False
    self.diaN[index - i + n - 1] = False

    return


    def generateBoard(self,n,ans):


    board = [["." for i in range(n)] for i in range(n)]

    for i in range(n):
    board[i][ans[i]] = "Q"

    return map("".join,board)
    # return board


    s = Solution()
    s.solveNQueens(4)
  • 相关阅读:
    可视化工具 kibana 的安装和使用
    常见的数据类型
    Elastic Search 分词器的介绍和使用
    基于 TCP 协议的网络编程
    Java7 的 NIO.2
    NIO(New IO)
    Java9 改进的对象序列化
    反射和泛型
    使用反射生成 JDK 动态代理
    使用反射生成并操作对象
  • 原文地址:https://www.cnblogs.com/lux-ace/p/10556951.html
Copyright © 2011-2022 走看看