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)
  • 相关阅读:
    GCC默认的标准不是ANSI C,而是GNU C90
    C/C++预定义宏
    GCC对C标准的支持
    Tupper's selfreferential formula
    VC++对C标准的支持
    一道笔试题
    C语言标准
    FLVPlayback视频
    getDefinitionByName与ApplicationDomain.getDefinition
    SVN
  • 原文地址:https://www.cnblogs.com/lux-ace/p/10556951.html
Copyright © 2011-2022 走看看