n皇后问题,不用递归
注释如下:
class Solution:def totalNQueens(self, n: int) -> int:if n < 1: # 如果 n 小于 1,直接返回 0return 0count = 0 # 初始化解的个数为 0stack = [(0, set(), set(), set())] # 初始化一个栈,元素为当前处理的行数、已经放置皇后的列数、左上到右下的对角线和、右上到左下的对角线和while stack: # 如果栈不为空row, cols, xy_diff, xy_sum = stack.pop() # 取出栈顶元素if row == n: # 如果已经处理完 n 行,解的个数加 1,继续处理下一个count += 1continuefor col in range(n): # 遍历当前行的每一列if col in cols or row - col in xy_diff or row + col in xy_sum: # 如果当前列已经被占据,或者在左上到右下的对角线或右上到左下的对角线上continue # 跳过这一列stack.append((row+1, cols | {col}, xy_diff | {row-col}, xy_sum | {row+col})) # 否则,将当前行数加一、已占据列数加上当前列、左上到右下的对角线和加上当前元素、右上到左下的对角线和加上当前元素的元组入栈return count # 返回解的个数
算法步骤:
- 如果输入的 n 小于 1,则直接返回 0;
- 初始化解的个数为 0,初始化一个栈,元素为当前处理的行数、已经放置皇后的列数、左上到右下的对角线和、右上到左下的对角线和;
- 当栈不为空时,取出栈顶元素,如果已经处理完 n 行,解的个数加 1,继续处理下一个;
- 遍历当前行的每一列,如果当前列已经被占据,或者在左上到右下的对角线或右上到左下的对角线上,则跳过这一列;
- 否则,将当前行数加一、已占据列数加上当前列、左上到右下的对角线和加上当前元素、右上到左下的对角线和加上当前元素的元组入栈;
- 返回解的个数。
相关文章:
n皇后问题,不用递归
注释如下: class Solution:def totalNQueens(self, n: int) -> int:if n < 1: # 如果 n 小于 1,直接返回 0return 0count 0 # 初始化解的个数为 0stack [(0, set(), set(), set())] # 初始化一个栈,元素为当前处理的行数、已经放…...
Verilog基础:$fopen和$fclose系统函数、任务的使用
相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 $fopen和$fclose是两个用于打开和关闭文件的系统函数、任务。最初,在Verilog-1995标准中,最多只能同时打开32个文件,其所使用的…...
python之字典的用法
python之字典的用法 Python中的字典是一种无序、可变、可迭代的数据类型,它由键值对组成,每个键都映射到一个值。字典在Python中被视为可变对象,这意味着我们可以随时更新、添加或删除字典中的键值对。 以下是一些关于Python字典的基本用法&a…...
Leetcode1971. 寻找图中是否存在路径
Every day a Leetcode 题目来源:1971. 寻找图中是否存在路径 解法1:并查集 并查集介绍:并查集详解 代码: /** lc appleetcode.cn id1971 langcpp** [1971] 寻找图中是否存在路径*/// lc codestart class UnionFind {vector&…...
程序可以创建多少个用户界面对象?
有人提到这样一个问题:”一个程序最多可以注册多少个窗口类?” 问题的答案不是一个具体的数字。因为大多数用户界面对象都来自一个共享的内存池,我们称之为”桌面堆内存”。尽管我们可以计算一个最大的理论值,但是在实际的场景中࿰…...
业绩不俗,毛利率下滑,股价接连下跌,片仔癀将向何处去?
撰稿|行星 来源|贝多财经 10月16日,中药龙头企业漳州片仔癀药业股份有限公司(600436.SH,下称“片仔癀”)发布截至9月30日的2023年前三季度业绩报告。发布财报后,片仔癀的股价多日下跌。 10月17日、18日、19日和20日…...
云安全—docker容器镜像检测
0x00 前言 docker镜像是属于整个云原生的重要基石之一,如果从镜像开始就没有安全性的话,那么整个云原生也就没有任何的安全性可言。所以镜像检测技术就成为了一个比较重要的点,本篇将通过研究docker镜像工具来整体分析风险以及应对方案。 市…...
JDBC相关记录
JDBC:Java DadaBase Connectivity 即Java语言连接数据库。 本质:JDBC是SUN公司制定的一套接口(interface)。 作用:不同的数据库有自己独特设计原理,JDBC的可以让Java程序员关注业务本身,而不需要…...
Nginx的基本介绍 安装 配置文件 日志
一、Nginx介绍二、nginx的优点三、多路复用1、I/O multiplexing 多并发 四、nginx内部技术架构五、安装NginxNginx部署-yum安装获取Nginx的yum源yum安装Nginx浏览器访问 编译安装Nginx安装编译环境安装依赖环境创建nginx用户安装nginx启动nginx实现nginx开机自启(脚…...
docker部署nginx并设置挂载
前言: 最近在学习docker和nginx,因为容器在运行过程中,相关的配置文件及日志都会存在容器内。对容器以来较高,当容器不存在的时候。所有的文件也就都没有了。并且当需要查看日志,修改配置文件的时候必须进入到容器内部…...
MAC如何在根目录创建文件
在这之前先明确一下啥是根目录。 打开终端,输入cd /,然后输入 ls 查看根目录下有哪些文件 可以看到 usr、etc、opt 这些文件的地方才叫根目录,而不是以用户命名,可以看到音乐、应用程序、影片、桌面的地方哈 介绍一种叫做软连接…...
某全球领先的芯片供应商:优化数据跨网交换流程,提高安全管控能力
1、客户介绍 某全球领先的芯片供应商,成立于2005年,总部设于北京,在国内上海、深圳、合肥等地及国外多个国家和地区均设有分支机构和办事处,致力于为客户提供更优质、便捷的服务。 2、建设背景 该公司基于网络安全管理的需求&am…...
自然语言处理---文本预处理概述
自然语言处理(Natural Language Processing,简称NLP)是计算机科学与语言学中关注于计算机与人类语言间转换的领域。其主要应用于:语音助手、机器翻译、搜索引擎、智能问答等。 文本预处理概述 文本语料在输送给模型前一般需要一…...
GCC编译器 什么是宏? 标识符和关键字
一.GCC是什么? GCC是用于编译C语言和其它语言的开源软件。 全称是 GNU Compiler Collection,意思是GNU编译器集和。 支持多种操作系统和硬件平台。二.GCC的作用 GCC的作用是将源码转换为可执行的文件,使之可以在计算机上运行。三.GCC编译c文…...
【GESP】2023年06月图形化三级 -- 自幂数判断
文章目录 自幂数判断【题目描述】【输入描述】【输出描述】【参考答案】其他测试用例 自幂数判断 【题目描述】 自幂数是指N位数各位数字N次方之和是本身,如153是3位数,其每位数的3次方之和是153本身,因此153是自幂数,1634是4位数…...
MySQL常见面试题
一、存储引擎相关 (1)MySQL 支持哪些存储引擎? MySQL支持多种存储引擎,比如InnoDB,MyISAM, MySQL大于等于5.5之后,默认存储引擎是InnoDB (2)InnoDB 和 MyISAM 有什么区别? InnoD…...
前端HTML CSS JS风格规范
本文代码规范来自HTML/CSS代码开发规范文档 文件命名规范 使用小写字母、数字和下划线组成文件名。 避免使用特殊字符和空格。 使用语义化的命名,能够清晰地表达出文件的功能或内容。 目录结构规范 使用约定俗成的目录结构,如:src/compon…...
为什么spring默认采用单例bean
概 述 熟悉 Spring开发的朋友都知道 Spring 提供了 5种 scope,分别是: singleton: 单例模式,当spring创建applicationContext容器的时候,spring会欲初始化所有的该作用域实例,加上lazy-init就可以避免预处理…...
Redisson分布式锁学习
之前工作中一直使用redis来实现分布式锁,但是最近项目使用了云弹性,机器会涉及到扩缩容,涉及到优雅停机的问题,普通的redis分布锁,一般使用时会设置锁的时间,但是如果在加锁期间 JVM异常重启等发生会导致分…...
Metabase:简单快捷的商业智能与数据分析工具 | 开源日报 No.61
moby/moby Stars: 66.8k License: Apache-2.0 Moby 是一个由 Docker 创建的开源项目,旨在实现和加速软件容器化。它提供了工具包组件的“乐高集”,可以将它们组装成基于容器的自定义系统的框架。组件包括容器生成工具、容器注册表、业务流程工具、运行时…...
SPIRAN ART SUMMONER应用场景:虚拟偶像运营团队的内容视觉统一生成方案
SPIRAN ART SUMMONER应用场景:虚拟偶像运营团队的内容视觉统一生成方案 1. 引言:虚拟偶像的视觉挑战与机遇 想象一下,你是一个虚拟偶像运营团队的负责人。每天,你需要为偶像的社交媒体账号更新头像、发布宣传海报、制作直播背景…...
深度拆解OpenAI Codex组织架构:这才是真正的AI-native团队!
很多时候,一个产品之所以有独特的气质,往往不是偶然的。它通常来自团队自己的工作方式,来自组织内部的决策逻辑,来自他们如何分工、如何协作、如何推进事情。在这一轮 AI 编程产品竞争里,Codex 是少数让我明显感受到“…...
SeaTunnel + SeaTunnel-Web 安装部署
下载SeaTunnel-Web 下载seatunnel-web安装包,安装包的版本在RENAME.md中有介绍。根据对应的版本号下载相应的软件包 https://mirrors.aliyun.com/apache/seatunnel/seatunnel-web/1.0.2/?spma2c6h.25603864.0.0.42d217c3AzltQh下载SeaTunnel 下载seatunnel安装包&a…...
AI Agent求职被拒最常见的原因是什么
这些实际上更像工程问题,公司愿意给30k月薪的原因就在这里,Agent开发不是玩具技术人,是能把玩具变成生产力的人。这环节最直接有效的方法就是跟着项目完整走一遍,如果你无从下手,趁着有大佬带队,你直接跟着…...
普通人用基础C语言从零搭建NES模拟器,背后藏着这些局限
一、普通人觉得遥不可及,他用基础C语言做到了好多人一提到NES模拟器,首先就会觉得那是只有专业大佬才做得来的,不是依靠现成框架去拼接,就是凭借复杂技术去累计,普通人想要从零基础开始上手,根本就是不可能…...
从零构建pix2pix训练集:数据准备与预处理实战
1. 理解pix2pix的数据需求 pix2pix作为经典的图像到图像转换模型,对训练数据有着特殊的要求。我第一次接触这个模型时,最头疼的就是数据准备环节。与普通分类任务不同,pix2pix需要的是成对的图像数据——简单说就是每张输入图片都要有对应的目…...
终极指南:如何使用node-opencv实现高效光流算法与运动跟踪
终极指南:如何使用node-opencv实现高效光流算法与运动跟踪 【免费下载链接】node-opencv OpenCV Bindings for node.js 项目地址: https://gitcode.com/gh_mirrors/no/node-opencv node-opencv是一个强大的OpenCV Bindings for node.js库,它为Jav…...
海南大学交友平台开发实战 day10(后端向前端输出_前端读取数据全流程联调+日志调试落地)
海南大学交友平台开发实战 day10(后端向前端输出/前端读取数据全流程联调日志调试落地) 大家好,欢迎来到海南大学交友平台开发实战系列的第十天!在前九天的开发中,我们已完成登录注册、UI 布局、Flask 后端基础搭建、S…...
Win10+VS2019配置vcpkg:从安装到项目集成的完整指南
1. 初识vcpkg:C开发者的效率神器 第一次接触vcpkg是在2018年接手一个跨平台C项目时,当时被各种第三方库的编译依赖折磨得够呛。vcpkg就像黑暗中的一束光,彻底改变了我的开发体验。简单来说,vcpkg是微软开源的C包管理工具…...
保姆级入门:像素幻梦创意工坊,小白也能玩转AI像素艺术
保姆级入门:像素幻梦创意工坊,小白也能玩转AI像素艺术 1. 认识像素幻梦创意工坊 1.1 什么是像素幻梦创意工坊 像素幻梦创意工坊是一款基于FLUX.1-dev扩散模型构建的AI像素艺术生成工具。它采用了独特的16-bit像素工坊视觉设计,为用户提供了…...
