八皇后[n皇后]问题 python 算法的理解

2023-11-03

八皇后[n皇后]

问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。答案是92种
可以看看遍历过程 方便理解
对于递归queen(A, cur+1) 的理解:
cur表示为当前的行 当cur == 8 时 print出A后
[0, 4, 7, 5, 2, 6, 1, 3]
因为是在for循环下的递归 所以是返回到cur==7 尝试 然后推进到8(没有)
接着返回到cur ==6,然后推进到 7,8 (仍然没有)
接着返回到5,4,3,2。。。这样遍历和递归的
到 cur == 2 时候 往后推 就有了
[0, 5, 7, 2, 6, 3, 1, 4]
代码部分实际上有点难理解 看完上面的那个视频之后 就容易理解得多

c = 0
def queen(A, cur=0):
    if cur == len(A):    #基本结束条件
        print(A)
        global c
        c += 1
        print('这是第{}种解决方法'.format(c))
        return    
    for col in range(len(A)):   		#从第0列开始遍历到第7列 行是不会有冲突的了
        A[cur]=col              		#试着摆在这一列 冲突的话有break。(这个效果比较二维数组的好处就是:不用做复原的动作 如果当前位置不是 直接覆盖该值即可)
		flag = True
        for row in range(cur):
            if A[row] == col or abs(col - A[row]) == cur - row: 	#判断条件 看看列冲突 和 对角冲突
                flag = False                    					#也就是说  这一列不能摆
                break
        if flag:    				#这一列能摆 摆上
            queen(A, cur+1)   		#减少问题规模 递归调用
queen([None]*8)

参考网页

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

八皇后[n皇后]问题 python 算法的理解 的相关文章

  • 蟒蛇 | MySQL | AttributeError:模块“mysql.connector”没有属性“connect”

    我正在学习 python 中的一个新库 mysql 我尝试执行以下命令 import mysql connector mydb mysql connector connect host localhost user root passwd
  • 从文本文件中删除特定字符

    我对 Python 和编码都很陌生 我当时正在做一个小项目 但遇到了一个问题 44 1 6 23 2 7 49 2 3 53 2 1 68 1 6 71 2 7 我只需要从每行中删除第三个和第六个字符 或者更具体地说 从整个文件中删除 字符
  • 多处理中的动态池大小?

    有没有办法动态调整multiprocessing Pool尺寸 我正在编写一个简单的服务器进程 它会产生工作人员来处理新任务 使用multiprocessing Process对于这种情况可能更适合 因为工作人员的数量不应该是固定的 但我需
  • 反编译Python 3.9.2的PYC文件[重复]

    这个问题在这里已经有答案了 目前 我有一个 3 9 2 版本的 python 的 PYC 文件 P S 这适用于所有 3 9 及更高版本 我正在尝试反编译 PYC 文件 但它显示错误 因为 uncompyle6 或者更确切地说 新版本 de
  • 创建上下文后将 jar 文件添加到 pyspark

    我正在笔记本上使用 pyspark 并且不处理 SparkSession 的创建 我需要加载一个包含一些我想在处理 rdd 时使用的函数的 jar 您可以使用 jars 轻松完成此操作 但在我的特定情况下我无法做到这一点 有没有办法访问sp
  • 协程从未被等待

    我正在使用一个简单的上下文管理器 其中包含一个异步循环 class Runner def init self self loop asyncio get event loop def enter self return self def e
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • 类型错误:需要二进制或 unicode 字符串,得到 618.0

    I ve been trying to implement this ML Linear Model into my dataset https www tensorflow org tutorials estimator linear L
  • Arcpy 模数在 Pycharm 中不显示

    如何将 Arcpy 集成到 Pycharm 中 我尝试通过导入模块但它没有显示 我确实知道该模块仅适用于 2 x python arcpy 在 PyPi Python 包索引 上不可用 因此无法通过 pip 安装 要使用 arcpy 您需要
  • python 中的 <> 运算符有什么作用?

    我刚刚遇到这个here http www feedparser org feedparser py 总是这样使用 if string1 find string2 lt gt 1 pass 什么是 lt gt 运算符这样做 为什么不使用通常的
  • Python HMAC:类型错误:字符映射必须返回整数、None 或 unicode

    我在使用 HMAC 时遇到了一个小问题 运行这段代码时 signature hmac new key secret key msg string to sign digestmod sha1 我收到一个奇怪的错误 File usr loca
  • Python将文本文件解析为嵌套字典

    考虑以下数据结构 HEADER1 key value key value HEADER2 key value key value HEADER3 key value HEADER4 key value key value 原始数据中没有缩进
  • 根据其他单元格值更改多个单元格值

    我想更改包含的单元格moving to movingToOpenor movingToClose基于下一个单元格中给出的状态 有时循环会被中断并且不会从open to close or close to open 这是我当前的数据框 Dat
  • 两个不同长度的数据帧的列之间的余弦相似度?

    我在 df1 中有文本列 在 df2 中有文本列 df2 的长度将与 df1 的长度不同 我想计算 df1 text 中每个条目与 df2 text 中每个条目的余弦相似度 并为每场比赛给出分数 输入样本 df1 mahesh suresh
  • 查找 Pandas DF 行中的最短日期并创建新列

    我有一个包含多个日期的表 有些日期将为 NaN 我需要找到最旧的日期 所以一行可能有 DATE MODIFIED WITHDRAWN DATE SOLD DATE STATUS DATE 等 因此 对于每一行 一个或多个字段中都会有一个日期
  • 如何在亚马逊 EC2 上调试 python 网站?

    我是网络开发新手 这可能是一个愚蠢的问题 但我找不到可以帮助我的确切答案或教程 我工作的公司的网站 用 python django 构建 托管在亚马逊 EC2 上 我想知道从哪里开始调试这个生产站点并检查存储在那里的日志和数据库 我有帐户信
  • 如何将带有参数的Python装饰器实现为类?

    我正在尝试实现一个接受一些参数的装饰器 通常带有参数的装饰器被实现为双重嵌套闭包 如下所示 def mydecorator param1 param2 do something with params def wrapper fn def
  • 将 Keras 集成到 SKLearn 管道?

    我有一个 sklearn 管道 对异构数据类型 布尔 分类 数字 文本 执行特征工程 并想尝试使用神经网络作为我的学习算法来拟合模型 我遇到了输入数据形状的一些问题 我想知道我想做的事情是否可能 或者我是否应该尝试不同的方法 我尝试了几种不
  • 如何使用 python 定位和读取 Data Matrix 代码

    我正在尝试读取微管底部的数据矩阵条形码 我试过libdmtx http libdmtx sourceforge net 它有 python 绑定 当矩阵的点是方形时工作得相当好 但当矩阵的点是圆形时工作得更糟 如下所示 另一个复杂问题是在某
  • python从二进制文件中读取16字节长的双精度值

    我找到了蟒蛇struct unpack 读取其他程序生成的二进制数据非常方便 问题 如何阅读16 字节长双精度数出二进制文件 以下 C 代码将 1 01 写入二进制文件三次 分别使用 4 字节浮点型 8 字节双精度型和 16 字节长双精度型

随机推荐

  • 网校搭建7:上架第一门课

    主页设置完了 网校没课程怎么行呢 现在就来添加第一门课 Step1 添加分类 在MeEdu的框架下 每一个课程都是属于一个分类 比如我有六门数学课 分别对应一年级到六年级 但是都属于是数学 那么分类就是数学 路径 视频 分类 添加保存即可
  • 剑指Offer第四十五题:扑克牌顺子

    题目描述 LL今天心情特别好 因为他去买了一副扑克牌 发现里面居然有2个大王 2个小王 一副牌原本是54张 他随机从中抽出了5张牌 想测测自己的手气 看看能不能抽到顺子 如果抽到的话 他决定去买体育彩票 嘿嘿 红心A 黑桃3 小王 大王 方
  • Docker 部署 Seata Server(使用nacos 做为注册中心和配置中心)

    组件版本关系 版本说明 每个 Spring Cloud Alibaba 版本及其自身所适配的各组件对应版本 经过验证 自行搭配各组件版本不保证可用 如下表所示 最新版本用 标记 docker 拉取 seata镜像 seata github地
  • Where is the xm Command in XenServer

    For those of you have used vanilla Xen will know about the xm command and what it does While I ve found in a few places
  • 小黑升级记----记ThinkPad470p加装固态盘

    目录 一 缘起 二 拆机 三 配件选择 四 安装 五 系统迁移 六 总结 一 缘起 本着做开发来用的目的 两年前买了ThinkPad T系列的470P 之所以选择ThinkPad 是因为之前R系列的本 用了接近10年 除了USB插口老化 里
  • vue中多个表单同时校验

    vue中多个表单同时校验 开发过程中 有时候会遇到需要对多个表单进行校验 需要利用Promise的特性进行解决 使用Promise进行一个队列校验 表单校验 submitForm refName string return new Prom
  • Vcenter 6.7添加主机报错解决方法

    出现故障环境为 Vcenter 6 7 40000 Esxi 6 7 update3 14320388 在添加新ESXI主机时进度条在80 报错 出现了常规系统错误 Unable to push CA certificates and CR
  • GD32替代STM32全过程记录

    文章目录 看完就懂 GD32替代STM32全过程记录 一 前言 二 GD32与STM32 什么是GD32 GD32F10x F30x和STM32F10x资源对比 GD32F10x F30x与STM32F10x软硬件设计对比 三 程序下载方法
  • CC2642 数据长度扩展(LE Data Length Extension)

    概要 数据长度扩展 LE Data Length Extension 功能允许LE控制器在连接状态下发送具有高达251字节的PDU 在连接期间的任何时刻 主从设备可以协商该PDU大小 这个和MTU不同 MTU是应用层的数据传输长度 这个是链
  • 安装centos与动态磁盘

    在动态磁盘压缩磁盘后 Linux是检测不到压缩后的磁盘空闲空间 需要用分区助手将动态磁盘变为基本磁盘
  • 【MES】工业4.0之MES系统方案

    人类自从250年前发生在英国的第一次工业革命开始 我们共经历了工业1 0 机械化 工业2 0 电气化自动化 工业3 0 信息化 之后迎来了工业4 0网络化 从工业革命的定义来看 仅仅是生产力的提升 那还只是量变 不能称为工业革命 必须有生产
  • CodeCounter

    package cn zzsxt io2 import java io BufferedReader import java io File import java io FileReader import java io IOExcept
  • 老猿学5G扫盲贴:3GPP中的5G计费架构

    专栏 Python基础教程目录 专栏 使用PyQt开发图形界面Python应用 专栏 PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一 计费逻辑架构和信息流 在32240子系列文档内定义了计费的逻辑架构和信息流 如图 上图
  • 使用HttpClient为GET/POST请求获取数据 -- 信任证书 SS连接

    使用HttpClient为GET POST请求获取数据 信任证书 SS连接 依赖部分 使用GET请求获取数据 使用POST 请求 Form 表单格式请求获取数据 使用POST 请求 Body 格式请求获取数据 公共部分 执行http请求 信
  • random 与 range

    random方法 random randint 1 5 会生成一个1 5之间的任一个整数 包括1和5 random random 会随机生成0 1的浮点数 random choice list 会从list中随机选出一个值 range方法
  • 使用Edge调试 安卓app应用或插件

    Edge调试 安卓手机 1 1 找到开发者模式 打开 USB 调试 1 2 找条数据线连上电脑 PC 打开 edge 2 1 打开 URL edge inspect devices 2 2 等待手机和 edge 响应 然后出现页面后 点击
  • SQL练习

    学生选课表的50个SQL语句 1 查询001课程比002课程成绩高的所有学生的学号 select a s id from select s id score from sc where c id 001 a select s id scor
  • python自动化办公(三十二)pyinstaller.exe打包成exe程序,运行后ModuleNotFoundError或FileNoFounderError:no such file or **

    目录 一 打包Tkinter 二 下载pyinstaller 三 pycharm终端运行pyinstaller 四 pyinstaller exe直接运行Cmd命令打包
  • Docker中web项目的部署以及访问

    1 将应用打包成demo war 2 编写Dockerfile 构建镜像 Dockerfile FROM 包含tomcat的基础镜像 COPY demo war usr local tomcat webapps COPY apple app
  • 八皇后[n皇后]问题 python 算法的理解

    八皇后 n皇后 问题表述为 在8 8格的国际象棋上摆放8个皇后 使其不能互相攻击 即任意两个皇后都不能处于同一行 同一列或同一斜线上 问有多少种摆法 答案是92种 可以看看遍历过程 方便理解 对于递归queen A cur 1 的理解 cu