首页 > 其他分享 >[模板题] - 52. N 皇后 II

[模板题] - 52. N 皇后 II

时间:2024-09-13 23:14:16浏览次数:1  
标签:diag2 False dfs 52 II diag1 answer path 模板

题目链接 52. N 皇后 II
思路 经典回溯题
题解链接 【视频】回溯秒杀N皇后!一个视频讲透!(Python/Java/C++/Go/JS)
关键点
时间复杂度 \(O(n!)\)
空间复杂度 \(O(n)\)

代码实现:

class Solution:
    def totalNQueens(self, n: int) -> int:
        m = n * 2 - 1
        answer = 0
        on_path = [False] * n
        diag1 = [False] * m
        diag2 = [False] * m
        
        def dfs(r):
            if r == n:
                nonlocal answer
                answer += 1
                return
            for c, on in enumerate(on_path):
                if not on and not diag1[r + c] and not diag2[r - c]:
                    on_path[c] = diag1[r + c] = diag2[r - c] = True
                    dfs(r+1)
                    on_path[c] = diag1[r + c] = diag2[r - c] = False

        dfs(0)
        return answer

标签:diag2,False,dfs,52,II,diag1,answer,path,模板
From: https://www.cnblogs.com/WrRan/p/18413073

相关文章

  • 线段树与离散化技巧 Mayor's posters——poj 2528
    问题描述:有一堵海报墙,从左到右一共有10000000个小块,墙上贴了许多海报,每张海报的高度与墙的高度相同,宽度不同,新帖的海报会将原有的海报覆盖,问当所有人把海报贴完是,墙上可以看到几张海报输入:第一行输入一个整数c表示测试数,每个测试第一行输入一个整数n(1<=N<=10000),代表张贴海报数......
  • P6852
    seeyouagain#include<bits/stdc++.h>usingnamespacestd;intn,m,x,y,v,Lok[500010],Rok[500010],Lban[500010],Rban[500010],pre[500010],ans[500010];boolfindans;set<int>st;template<typenameT>inlinevoidread(T&ans){ ans=0; c......
  • java实现根据word模板赋值及电子签章实现
    一:添加相关依赖<!--电子签章实现<!&ndash;免费版.free只支持前三页转化&ndash;>--><dependency><groupId>e-iceblue</groupId><artifactId>spire.office.free</artifactId><......
  • Day2|209.长度最小的子数组|59.螺旋矩阵II|区间和|开发商购买土地
    209.长度最小的子数组59.螺旋矩阵II 209.长度最小的子数组classSolution{publicintminSubArrayLen(inttarget,int[]nums){intfastIndex=0;intslowIndex=0;intsums=0;intresult=Integer.MA......
  • 经典前端+后端+表头+表身的开发实战参考简易模板【珍藏】
    前端部分(Vue3+ElementPlus)1.修改MPS002HList.vue(主生产计划列表)a.添加查询表单在模板中添加查询表单,包含产品料号、品名、规格和年月的输入项。<template><div><!--查询表单--><el-form:inline="true":model="filters"class="demo-form-inline&qu......
  • C++--模板
    1泛型编程如何将Swap实现乘成一个通用的交换函数voidSwap(int&left,int&right){inttemp=left;left=right;right=temp;}voidSwap(double&left,double&right){doubletemp=left;left=right;right=temp;}voidSwap......
  • 滑动窗口(3)_最大连续1的数组个数III
    个人主页:C++忠实粉丝欢迎点赞......
  • 【洛谷 P5266】【深基17.例6】学籍管理 题解(映射+分支)
    【深基17.例6】学籍管理题目描述您要设计一个学籍管理系统,最开始学籍数据是空的,然后该系统能够支持下面的操作(不超过条):插入与修改,格式1NAMESCORE:在系统中插入姓名为NAME(由字母和数字组成不超过20个字符的字符串,区分大小写),分数为()的学生。如果已经有同名的学生则更新这名......
  • CVE-2015-5254(ActiveMQ-反序列化漏洞)
    漏洞描述编号:CVE-2015-5254影响版本:ApacheActiveMQ5.13.0之前5.x版本CVE地址:CVE-2015-5254漏洞原理:该漏洞源于程序没有限制可在代理中序列化的对象。远程攻击者可借助特制的序列化的JavaMessageService(JMS)ObjectMessage对象利用该漏洞执行任意代码复现环境windows,doc......
  • 18057 ASCII码值之和的差
    **思路**:1.读取两个字符串`s1`和`s2`。2.计算每个字符串中所有字符的ASCII码值之和。3.计算两个字符串的ASCII码值之和的差。4.输出结果。**伪代码**:1.读取字符串`s1`。2.读取字符串`s2`。3.初始化`sum1`和`sum2`为0。4.对于`s1`中的每个字......