n-皇后问题
希望这篇题解对你有用,麻烦动动手指点个赞或关注,感谢您的关注
不清楚蓝桥杯考什么的点点下方👇
考点秘籍
想背纯享模版的伙伴们点点下方👇
蓝桥杯省一你一定不能错过的模板大全(第一期)
蓝桥杯省一你一定不能错过的模板大全(第二期)
蓝桥杯省一你一定不能错过的模板大全(第三期)
蓝桥杯省一你一定不能错过的模板大全(第四期)!!!
想背注释模版的伙伴们点点下方👇
蓝桥杯必背第一期
蓝桥杯必背第二期
往期精彩回顾
蓝桥杯上岸每日N题 第一期(一)!!!
蓝桥杯上岸每日N题第一期(二)!!!
蓝桥杯上岸每日N题第一期(三)!!!
蓝桥杯上岸每日N题第二期(一)!!!
蓝桥杯上岸每日N题第三期(一)!!!
蓝桥杯上岸每日N题 第四期(最少刷题数)!!!
蓝桥杯上岸每日N题 第五期(山)!!!
蓝桥杯上岸每日N题 第六期(求阶乘)!!!
蓝桥杯上岸每日N题 第七期(小猫爬山)!!!
蓝桥杯上岸每日N题 第八期 (全球变暖)!!!
操作系统期末题库 第九期(完结)
LeetCode Hot100 刷题(第三期)
idea创建SpringBoot项目报错解决方案
数据库SQL语句(期末冲刺)
想看JavaB组填空题的伙伴们点点下方 👇
填空题
竞赛干货
算法竞赛字符串常用操作大全
蓝桥杯上岸必刷!!!(模拟/枚举专题)
蓝桥杯上岸必背!!! (第三期 DP)
蓝桥杯上岸必背!!!(第四期DFS)
蓝桥杯上岸必背!!!(第五期BFS)
蓝桥杯上岸必背!!!(第六期树与图的遍历)
蓝桥杯上岸必背!!!(第七期 最短路算法)
蓝桥杯上岸必背!!!(第八期 简单数论)
蓝桥杯上岸必刷!!!(进制、数位专题)
蓝桥杯上岸考点清单 (冲刺版)!!!
题目
n-皇后问题
关于n皇后正对角线和反对角线的详细解释
即为什么是dg[x+i]、udg[x-i+n]?
是通过数组下标去维护正反对角线。
通过相同的数组下标保证遍历正反对角线上的点。
(1)x + i实际上是对应的行号加上列号

注:如图,通过行号加列号,保证了正对角线每个数组下标都一致相同。
所以在判断的时候只需要设置为dg[x+i]即可访问该正对角线上的所有点。
(2)x - i实际上是对应的行号减去列号
会出现负数情况,需要再加上一个n。
即 x-i+n

注:如图,通过行号减去列号,保证了反对角线上每个数组下标一致(虽然还存在部分的负数)
负数的处理很好办,再加上n,即可将负数保证为正数,这样就不会出现数组下标越界的问题。
所以在判断的时候只需要设置为**udg[x-i+n]**即可访问该反对角线上的所有点。
原理(解析几何)
对于y=k*x+b直线方程
给定一个斜率k和截距b我们可以唯一确定这一条直线

注:左为正对角线dg[],右为反对角线udg[]。
有了上述的几何基础,我们可以代入到本题中。

说明:途图中的y为行号(x) , x为列号(i)。
注:找到一个如图的b值,结合直线的斜率便可以唯一确定这一条直线。
对于这条直线上所有的点截距均为b
所有我们只需要找到截距,便可以遍历该对角线上的所有点。
N定义为20的原因
x+i=9+9=18,为防止边界多开一些空间定义为20个单位。
Accode
import java.util.*;
public class Main{static int N=20;static char g[][]=new char [N][N];static boolean dg[]=new boolean[N];static boolean udg[]=new boolean[N];static boolean col[]=new boolean[N];static int n;public static void main(String []args){Scanner in = new Scanner(System.in);n=in.nextInt();for(int i=0;i<n;i++){for(int j=0;j<n;j++){g[i][j]='.';}}dfs(0);}public static void dfs(int x){if(x==n){for(int i=0;i<n;i++){for(int j=0;j<n;j++){System.out.print(g[i][j]);}System.out.println();}System.out.println();return;}//因为我们是去看每一行的位置是否满足,每一行去dfs保证每一行至多只有一个皇后//所以在标记判断的时候,标记上列和正对角线和反对角线即可for(int i=0;i<n;i++){if(!col[i]&&!dg[x+i]&&!udg[x-i+n]){g[x][i]='Q';col[i]=dg[x+i]=udg[x-i+n]=true;dfs(x+1);col[i]=dg[x+i]=udg[x-i+n]=false;g[x][i]='.';//不满足的标为 .}}
}
}
相关文章:
n-皇后问题
希望这篇题解对你有用,麻烦动动手指点个赞或关注,感谢您的关注 不清楚蓝桥杯考什么的点点下方👇 考点秘籍 想背纯享模版的伙伴们点点下方👇 蓝桥杯省一你一定不能错过的模板大全(第一期) 蓝桥杯省一你一定不能错过的模板大全…...
JS如何向数组中添加数组
常见的办法有 1、push()方法 var arr [a, b, c,d]; arr.push(e); console.log(arr); // [a, b, c, d,e] 2、concat()方法 var arr1 [a, b, c]; var arr2 [d, e, f]; var arr3 arr1.concat(arr2); console.log(arr3); // [a, b, c, d, e, f] 3、可以使用ES6中的spread操作符…...
串口通信收发项目级一
void 定时器中断函数入口(void) { if(判断是否为定时器中断) { static uint16_t num定义静态变量; static uint8_t index定义静态变量; unsigned char buff_busy定义局部变量; if(串口中断接收数据数量>静态变量) { 静态变量串口中断接收数据数量; } else if(静态变量串口中…...
设计模式之七:适配器模式与外观模式
面向对象适配器将一个接口转换成另一个接口,以符合客户的期望。 // 用火鸡来冒充一下鸭子class Duck { public:virtual void quack() 0;virtual void fly() 0; };class Turkey { public:virtual void gobble() 0;virtual void fly() 0; };class TurkeyAdapter :…...
FFmpeg接收UDP码流
一、FFmpeg参数初始化: //在打开码流前指定各种参数比如:探测时间/超时时间/最大延时等//设置缓存大小,1080p可将值调大av_dict_set(&options, "buffer_size", "8192000", 0);//以tcp方式打开,如果以udp方式打开将tcp替换为udpav_dict_set(…...
【Pytroch】基于支持向量机算法的数据分类预测(Excel可直接替换数据)
【Pytroch】基于支持向量机算法的数据分类预测(Excel可直接替换数据) 1.模型原理2.数学公式3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果 1.模型原理 支持向量机(Support Vector Machine,SVM)是一种强大的监…...
【Git】git初始化项目时 | git默认创建main分之 | 如何将git默认分支从main改为master
git 更改 branch 在 Git 中,如果你在第一次提交后想要将默认分支名从 main 修改为 master,你可以按照以下步骤进行操作: 创建 master 分支: 首先,你需要在当前的 main 分支基础上创建一个新的 master 分支。使用以下命…...
Vue3中配置environment
environment顾名思义就是环境,对于项目来说,无非就是: 开发环境:development生产环境:production 某些逻辑,配置等在两个不同的环境中要呈现出不同的状态,所以environment是一个必要的事情。 …...
前端基础积累_新技术_Vue_React_H5_奇怪的BUG_面试_招聘
前端之路 序 前几天在博客园收到了一封来自出版社的消息,说看到原来很久之前写的 < VueJS 源码分析的文章 > 希望能够联系他们出版社去写书。这样的事情虽然在博客园是会经常发生的,但是这也让我意识到了,多多写高质量的文章能够给 co…...
【密码学】维京密码
维京密码 瑞典罗特布鲁纳巨石上的图案看起来毫无意义,但是它确实是一种维京密码。如果我们注意到每组图案中长笔画和短笔画的数量,将得到一组数字2、4、2、3、3、5、2、3、3、6、3、5。组合配对得到24、23、35、23、36、35。现在考虑如图1.4所示的内容&a…...
小米基于 Flink 的实时计算资源治理实践
摘要:本文整理自小米高级软件工程师张蛟,在 Flink Forward Asia 2022 生产实践专场的分享。本篇内容主要分为四个部分: 发展现状与规模框架层治理实践平台层治理实践未来规划与展望 点击查看原文视频 & 演讲PPT 一、发展现状与规模 如上图…...
React源码解析18(3)------ beginWork的工作流程【mount】
摘要 OK,经过上一篇文章。我们调用了: const root document.querySelector(#root); ReactDOM.createRoot(root)生成了FilberRootNode和HostRootFilber。 并且二者之间的对应关系也已经确定。 而下一步我们就需要调用render方法来讲react元素挂载在ro…...
JAVA SpringBoot 项目 多线程、线程池的使用。
1.1 线程: 线程就是进程中的单个顺序控制流,也可以理解成是一条执行路径 单线程:一个进程中包含一个顺序控制流(一条执行路径) 多线程:一个进程中包含多个顺序控制流(多条执行路径࿰…...
【数据结构与算法】动态规划算法
动态规划算法 应用场景 - 背包问题 背包问题:有一个背包,容量为 4 磅,现有如下物品: 物品重量价格吉他(G)11500音响(S)43000电脑(L)32000 要求达到的目标…...
离线安装vscode插件,导出 Visual Studio Code 的扩展应用,并离线安装
在没有网络的情况下,如何安装vscode插件 1.使用之前电脑安装过的插件包 Visual Studio Code 的扩展应用安装位置在文件夹 .vscode/extensions 下。不同平台,它位于: Windows %USERPROFILE%\.vscode\extensions Mac ~/.vscode/extensions L…...
【ChatGPT 指令大全】怎么使用ChatGPT辅助程式开发
目录 写程式 解读程式码 重构程式码 解 bug 写测试 写 Regex 总结 在当今快节奏的数字化世界中,程式开发变得越来越重要和普遍。无论是开发应用程序、网站还是其他软件,程式开发的需求都在不断增长。然而,有时候我们可能会遇到各种问题…...
涂色
蜀山区2021年信息学竞赛试题 题目描述 Description 小李喜欢写日记,为了有效区分每题记录的内容,他循环使用七种不同颜色的笔在日记本上记录每天发生的事情,循环次序分别为Red,Orange,Yellow,Green,Blue,Cyan,Purple,由于近期工作繁忙&…...
微服务——数据同步
问题分析 mysql和redis之间有数据同步问题,ES和mysql之间也有数据同步问题。 单体项目可以在crud时就直接去修改,但在微服务里面不同的服务不行。 方案一 方案二 方案三 总结 导入酒店管理项目 倒入完成功启动后可以看见数据成功获取到了 声明队列和…...
MySQL 手机选号(AABB、ABCD、DCBA、AAA),SQL SERVER 手机选号(AABB、ABCD、DCBA、AAA),通过规则查询靓号
先上SQL SERVER: create table plat_uidlist(Uidd varchar(15) , Areaid int , State int)insert into plat_uidlist values(2335435 ,8 ,0 ) insert into plat_uidlist values(2335436 ,8 ,1 ) insert into plat_uidlist values(2335437 ,2 ,2 ) insert into plat…...
【server组件】——mysql连接池的实现原理
目录 1.池化技术 2.数据库连接池的定义 3.为什么要使用连接池 4. 数据库连接池的运行机制 5. 连接池与线程池的关系 6. CResultSet的设计 6.1构造函数 7. CDBConn的设计 6.1.构造函数 6.2.init——初始化连接 8.数据库连接池的设计要点 9.接口设计 9.1 构造函数 …...
树莓派Pico玩转TFmini Plus雷达:MicroPython驱动教程与避坑指南(附IIC模式切换)
树莓派Pico玩转TFmini Plus雷达:MicroPython驱动教程与避坑指南(附IIC模式切换) 当树莓派Pico遇上TFmini Plus雷达,会碰撞出怎样的火花?这款售价仅4美元的微控制器,凭借其双核ARM Cortex-M0处理器和灵活的G…...
基于Matlab和Cplex的微电网优化调度研究:涵盖风光热储能及多场景负荷模拟分析
考虑风光火储的微电网优化调度 软件:Matlabcplex 介绍:考虑风电、光伏、热电机组和储能优化调度,其中负荷考虑冬季或夏季两种场景,并且考虑晴天、多云、雨天、多风和少风场景,对风机考虑相应的故障概率,以火…...
第21届智能车竞赛走马观碑组赛道元素与目标板识别策略解析
1. 走马观碑组赛道核心元素解析 参加智能车竞赛走马观碑组的同学都知道,赛道设计是比赛中最关键的变量之一。我参加过三届比赛,发现很多新手队伍在前期准备时,往往把大量精力放在代码编写上,却忽略了赛道元素的系统分析࿰…...
无感FOC电机三相控制高速吹风筒方案 FU6812L+FD2504S 电压AC220V 功率80W
无感FOC电机三相控制高速吹风筒方案 FU6812LFD2504S 电压AC220V 功率80W 最高转速20万RPM 方案优势:响应快、效率高、噪声低、成本低 控制方式:三相电机无感FOC 闭环方式:功率闭环,速度闭环 调速接口:按键调试 提供原理…...
分布式电源优化配置的二阶锥模型编程方法
分布式电源优化配置 二阶锥 编程方法:采用matlabyalmip编程,cplex或gurobi作为求解器。 主要内容:考虑配电网二阶锥模型,运行主体包括光伏、微燃机以及负荷,创新性考虑敏感负荷及加权电压支撑能力指标,约束…...
如何免费解锁WeMod Pro功能:Wand-Enhancer完整指南与最佳实践
如何免费解锁WeMod Pro功能:Wand-Enhancer完整指南与最佳实践 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 你知道吗?现在你可…...
手把手调试Android 14 ShellTransitions:用Log追踪ActiveTransition与Handler匹配过程
手把手调试Android 14 ShellTransitions:用Log追踪ActiveTransition与Handler匹配过程 在Android 14的窗口动画系统中,ShellTransitions机制扮演着核心角色。作为一名长期深耕Android系统开发的工程师,我最近在定制ROM时遇到了一个典型问题&a…...
导师说我的问卷像“废纸”:毕业季的问卷设计困境,AI能拯救你吗?
每年毕业季,数以百万计的学生在图书馆、实验室和电脑前煎熬。其中最令人头疼的环节之一,就是设计研究问卷。社会学专业的小李花了三周时间设计出一份关于“00后消费观”的问卷,信心满满地交给导师审阅。 导师只扫了一眼,就指出关…...
INA219电流电压功率监测库详解:高精度电源监控实战指南
1. 项目概述DFRobot_INA219 是一款基于 Texas Instruments INA219 高精度电流/电压/功率监测芯片的 Arduino 兼容库,对应硬件型号为 SEN0291 —— Gravity I2C 数字功率计模块。该模块采用标准 IC 接口通信,支持在 0–26 V 总线电压、8 A 检测电流范围内…...
Python的__getattr__中的完整性
Python中的__getattr__方法是一个强大的钩子函数,用于在访问不存在的属性时动态处理请求。它的完整性设计不仅体现了Python的灵活性,也为开发者提供了更多控制权。理解__getattr__的完整性机制,能够帮助开发者构建更健壮、更智能的对象模型。…...
