当前位置: 首页 > news >正文

面试150 N皇后Ⅱ

在这里插入图片描述

思路

与N皇后的思路类似,通过逐行放置皇后并递归探索所有合法方案。每次放置前,使用三个集合分别记录已被占用的列、主对角线(row - col)和副对角线(row + col),以实现有效剪枝,避免冲突。若成功在每一行都放置了皇后(即 row == n),则计数器加一。通过递归与撤销操作(回溯),枚举所有可能的合法布局,从而统计出所有可行解的总数。

class Solution:def totalNQueens(self, n: int) -> int:self.count=0def backtracking(row,cols,dig1,dig2):if row==n:self.count+=1for col in range(n):if col in cols or row-col in dig1 or row+col in dig2:continuecols.add(col)dig1.add(row-col)#记录主对角线的情况dig2.add(row+col)#记录副对角线的情况backtracking(row+1,cols,dig1,dig2)cols.remove(col)dig1.remove(row-col)dig2.remove(row+col)backtracking(0,set(),set(),set())return self.count
http://www.dtcms.com/a/292963.html

相关文章:

  • Docker环境搭建RabbitMq集群详解
  • 【CAN】2.帧格式
  • ReasonFlux:基于思维模板与分层强化学习的高效推理新范式
  • Python接口自动化实战 ( 第一阶段) - 封装接口请求类和异常处理
  • Ubuntu 虚拟机配置 与Windows互传文件
  • react19相关问题和解答
  • 【技术新闻】OpenAI发布GPT-5,AI编程助手迎来革命性突破
  • React集成百度【BMap Draw】教程(001):实现距离测量和面积测量
  • dubbo源码分析之请求调用异步化原理
  • Pandas核心数据结构详解
  • 第3章通用的服务可用性治理手段——3.2 重试
  • Kotlin 作用域函数 let 的实现原理
  • 大疆视觉算法面试30问全景精解
  • 基于Java+MySQL实现(Web)文件共享管理系统(仿照百度文库)
  • Java自动拆箱机制
  • 云祺容灾备份系统阿里云对象存储备份与恢复实操手册
  • List<UserInfo> list = new ArrayList<>();为什么要这样创建数组?
  • 智能文本抽取在法院卷宗管理应用剖析
  • 力扣-139.单词拆分
  • Qt 网络编程如何采用Http进行通信
  • 碳化硅缺陷分类与原因
  • C++的lambda表达式原理
  • 【RK3576】【Android14】MIC开发调试
  • 【iOS】SideTable
  • [学习] 笛卡尔坐标系的任意移动与旋转详解
  • 交叉编译opencv(Cpp)于arm64架构开发板上
  • AI 音频产品开发模板及流程(二)
  • 使用python中的pymysql库,并且转化为数组元组数据
  • 【多任务YOLO】A-YOLOM
  • 字体识别实战:用Python打造智能字体侦探工具