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

洛谷P1219八皇后题解

洛谷P1219

题目传送门:https://www.luogu.com.cn/problem/P1219

题目简述:

输入n表示棋盘大小,n的范围是6<=n<=13

现在要按行顺序放置皇后,让皇后不互相攻击的情况下放置,也就是要安排列数,使得每一行每一列都有一个皇后

思路分析:

以n = 6为例子:

可以想象这道题的解答树,对于每一层有6个列数可以选择,然后每一个节点都有六个子节点,现在需要找出能走到要求深度的树的分支,输出前三个路径
比较显然的是会选择dfs来遍历树,但难点是每一次都要判断是否皇后之间有攻击

一开始的想法是弄一个vis表记录每一个禁着点,但是发现这太麻烦了,,
再思考一下其实是又数学关系的,一个是列数相等,一个是行差等于列差。

数据储存方式:
col[row]用这个储存列数,可以确定皇后的位置,row也就是dfs的深度

代码:

#include<cstdio>
#include<cstring>
#include<cmath>int n;
int col[15];  //col[row] = 列
int cnt;bool safe(int r, int c) {for (int i = 1; i < r; i++) {if (c == col[i])return 0;if (std::abs(c-col[i]) == r-i)return 0;}return 1;
}void dfs(int row) {if (row == n + 1) {cnt++;if (cnt <= 3) {for (int i = 1; i <= n; i++) {printf("%d ", col[i]);}printf("\n");}return;}for (int i = 1; i <= n; i++) {if (safe(row,i)) {col[row] = i;dfs(row + 1);}}
}int main() {scanf("%d", &n);cnt = 0;dfs(1);printf("%d\n", cnt);return 0;
}

最后:

image

http://www.jsqmd.com/news/524730/

相关文章:

  • 20251222 2026-2027-2 《Python程序设计》实验1报告
  • 一文学习 Spring 声明式事务源码全流程总结
  • Ubuntu系统崩溃排查指南:深入解析关键日志文件
  • 别再手动改配置了!用PowerCLI批量管理ESXi主机NTP设置
  • 工业去离子水采购品牌指南:去离子水批发/工业去离子水采购/工业脱盐水/工业超纯水价格/工业超纯水批发/工业软水/选择指南 - 优质品牌商家
  • 保姆级教程:在Ubuntu 22.04上为ARM板卡交叉编译wireless_tools 29(附补丁和Makefile修改)
  • 你的论文是“人写的”吗?百考通AIGC检测工具,让AI生成内容无所遁形
  • Java音频处理实战:从DFT到FFT的算法实现与频谱可视化
  • 基于springboot特产销售购物平台设计与开发(源码+精品论文+答辩PPT等资料)
  • 告别环境配置烦恼:5分钟用Docker在Linux上跑起人大金仓V9数据库
  • 从零实现PUMA560机械臂运动学正解:基于改进DH建模的Matlab实战解析
  • 视觉提示工程新范式:用SAM模型实现5分钟精准图像分割(附Colab教程)
  • 2026年 三菱GOT触摸屏厂家推荐排行榜:GOT3000/GOT2000/GOT16/GOT15/GOT12/GOT11/GOT10/GS系列工业设备触摸屏品牌深度解析 - 品牌企业推荐师(官方)
  • ESP32-S3 AT指令避坑指南:如何优化HTTP图片上传速度(实测16kb/s提升技巧)
  • ESP8266玩转LED:从硬件连接到代码调试的完整指南(附常见问题排查)
  • 跟我学UDS(ISO14229) ———— NRC码实战解析与避坑指南
  • 告别等待!用vLLM的AsyncLLM引擎实现实时AI对话流式输出(Python异步编程实战)
  • LaTeX绘制点云处理神经网络架构图:从TikZ基础到高级技巧
  • 实战指南:基于Keil MDK的华大HC32F460 DDL库工程搭建全解析
  • 避坑指南:Maya polyToCurve命令的5个隐藏限制及替代方案
  • 为什么树叶在红外图像里总比杯子‘冷‘?一文搞懂材料发射率的视觉骗局
  • 用Grover算法实战优化电商推荐系统:量子计算在NISQ时代的真实案例
  • 基于ECMS控制策略的燃料电池能量管理仿真文件
  • 保姆级教程:在PX4飞控上为你的机器人底盘编写第一个CAN控制程序
  • 【收藏级实战】一周搞定研发平台 Agent 接入!TQL 专属 Agent 开发全攻略(附源码思路)
  • 不用ViewModelLocator?Prism自动绑定还能这样玩(实战演示)
  • 华为手机芯片进化史:从麒麟955到麒麟9000,性能提升有多大?
  • 基于改进Unet的多场景水果图像分割与分类研究
  • OpenCV图像处理实战:5个高频算子解决90%的日常需求
  • 从零搭建FPGA图像处理系统:SDI转HDMI/MIPI全流程解析(基于RK3588平台)