55 leetcode - N-Queens II

来源:互联网 发布:新加坡进出口数据 编辑:程序博客网 时间:2024/06/06 01:54

N-Queens的变形.

#!/usr/bin/python# -*- coding: utf-8 -*-'''N-Queens IINow, instead outputting board configurations, return the total number of distinct solutions.'''class Solution(object):    def __check(self,result,start_index,next_val):        for index,val in enumerate(result[:start_index]):            if (val == next_val) or (abs(index - start_index) == abs(val - next_val)): #将不符合N皇后规则的去掉                return False        return True    def __solveNQueens(self,n,result,start_index,ret):        if start_index == n:            ret[0] += 1        else:            #index代表行数,val代表列数            for i in range(n):                if self.__check(result,start_index,i) == True:                    result[start_index] = i                    self.__solveNQueens(n,result,start_index + 1,ret)    def totalNQueens(self, n):        """        :type n: int        :rtype: List[List[str]]        """        if n == 1:            return 1        if n < 4:            return 0        ret = [0]        self.__solveNQueens(n,[0]*n,0,ret)        return ret[0]if __name__ == "__main__":    s = Solution()    print s.totalNQueens(8)
0 0
原创粉丝点击