052 N Queens 2

纯递归方法, 网上有一个bit manipulation 的方法 不(看)想(不)深(大)究(懂) LOL

class Solution:
    def __init__(self):
        self.ans = 0
    # @param {integer} n
    # @return {integer}
    def totalNQueens(self, n):
        self.helper(0,[[0]* n for i in range(0,n)],n)
        return self.ans

    def helper(self, level, tmp, n):
        if level == n:
            self.ans += 1
            return
        for pos in range(0,n):
            flag = True
            for i in range(0, level):
                if not flag:
                    break
                if tmp[i][pos] == 1:
                    flag = False
                    break
                for j in range(0, n):
                    if tmp[i][j]== 1 and (level-i == pos-j or level-i==j-pos):
                        flag = False
                        break
            if flag:
                tmp[level][pos] = 1
                self.helper(level+1, tmp, n)
                tmp[level][pos] = 0
时间: 2024-08-07 17:35:31

052 N Queens 2的相关文章

051 N Queens

此题即在 052 N Queens 2 基础上稍作改进 并注意返回格式就好 import copy class Solution: def __init__(self): self.ans = [] # @param {integer} n # @return {integer} def solveNQueens(self, n): self.helper(0,[["."]* n for i in range(0,n)],n) return self.ans def helper(se

lintcode 中等题:N Queens N皇后问题

题目: N皇后问题 n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击.<不同行,不同列,不同对角线> 给定一个整数n,返回所有不同的n皇后问题的解决方案. 每个解决方案包含一个明确的n皇后放置布局,其中“Q”和“.”分别表示一个女王和一个空位置. 样例 对于4皇后问题存在两种解决的方案: [ [".Q..", // Solution 1 "...Q", "Q...", "..Q."], [&qu

[052] 微信公众平台开发视频公开课第2讲-自定义菜单开发讲解

微信公众平台开发视频公开课第2讲将为大家讲解自定义菜单的相关知识,时间是2014年5月24日20:00-22:00.本次课程的大纲如下: 1.自定义菜单简介 1)如何获得菜单权限 2)菜单按钮分类(click和view) 2.编辑模式下的菜单使用 1)创建菜单 2)预览发布 3)注意事项 3.开发模式下的菜单使用 1)菜单接口介绍 2)如何发起https请求(两种方法,IBM JDK环境) 3)获取access_token 4)如何封装菜单结构 5)创建菜单 6)处理菜单点击事件 7)菜单的查询

Python----递归------Eight Queens 八皇后问题

递归思想是算法编程中的重要思想. 作为初学者,对递归编程表示很蒙逼,每次遇到需要递归的问题,心里就有一万头草泥马飞过~~~~~~(此处略去一万头草泥马) 在B站看数据结构与算法的视频时,视频中给了两个非常典型的例子--<汉诺塔>和<八皇后问题>,就希望自己用Python实现一下这两个递归程序,其中汉诺塔问题比较简单,还是能够理解,这里就不讲了. <八皇后问题>:说要在一个棋盘上放置8个皇后,但是不能发生战争,皇后们都小心眼,都爱争风吃醋,如果有人和自己在一条线上(水平.

lintcode 中等题:N Queens II N皇后问题 II

题目: N皇后问题 II 根据n皇后问题,现在返回n皇后不同的解决方案的数量而不是具体的放置布局. 样例 比如n=4,存在2种解决方案 解题: 和上一题差不多,这里只是求数量,这个题目定义全局变量,递归的时候才能保存结果,参考程序 java程序: class Solution { /** * Calculate the total number of distinct N-Queen solutions. * @param n: The number of queens. * @return:

Sicily 1172. Queens, Knights and Pawns

Constraints Time Limit: 1 secs, Memory Limit: 64 MB Description You all are familiar with the famous 8-queens problem which asks you to place 8 queens on a chess board so no two attack each other. In this problem, you will be given locations of queen

54. 八皇后问题[eight queens puzzle]

[本文链接] http://www.cnblogs.com/hellogiser/p/eight-queens-puzzle.html [题目] 在8×8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处在同一行.同一列或者同一对角斜线上.下图中的每个黑色格子表示一个皇后,这就是一种符合条件的摆放方法.请求出总共有多少种摆法. [分析] 之前博文28.字符串的排列[StringPermutation]介绍过字符串的全排列,八皇后问题也可以转换为全排列问题. 由于八个皇后的任意两个不

LeetCode: Maximum Subarray [052]

[题目] Find the contiguous subarray within an array (containing at least one number) which has the largest sum. For example, given the array [?2,1,?3,4,?1,2,1,?5,4], the contiguous subarray [4,?1,2,1] has the largest sum = 6. [题意] 给定一个数组,找出和最大的子数组,返回这个

poj3239 Solution to the n Queens Puzzle (n皇后问题)

Solution to the n Queens Puzzle Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 3494   Accepted: 1285   Special Judge Description The eight queens puzzle is the problem of putting eight chess queens on an 8 × 8 chessboard such that none