2n皇后问题
2n皇后问题是8皇后问题的拓展那么我们就先讲解一下求解8皇后问题的基本思路。8皇后问题英文Eight queens是由国际棋手马克斯·贝瑟尔于1848年提出的问题。问题表述为在8×8格的国际上摆放8个皇后使其不能互相攻击即任意两个皇后都不能处于同一行、同一列或同一斜线上问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解后来有人用图论的方法解出92种结果。计算机发明后有多种计算机语言可以编程解决此问题。该文章部分文字转自百度百科官方回溯算法思路八皇后问题如果用穷举法需要尝试8的8次方16,777,216种情况。每一列放一个皇后可以放在第 1 行第 2 行……直到第8行。回溯法优于穷举法。将列A的皇后放在第一行以后列B的皇后放在第一行已经发生冲突。这时候不必继续放列C的皇后而是调整列B的皇后到第二行继续冲突放第三行不冲突了才开始进入列C。如此可依次放下列A至E的皇后如图2所示。将每个皇后往右边横向、斜向攻击的点位用叉标记发现列F的皇后无处安身。这时回溯到列E的皇后将其位置由第4行调整为第8行进入列F发现皇后依然无处安身再次回溯列E。此时列E已经枚举完所有情况回溯至列D将其由第2行移至第7行再进入列E继续。按此算法流程最终找到如图3所示的解成功在棋盘里放下了8个“和平共处”的皇后。继续找完全部的解共92个。回溯算法求解八皇后问题的原则是有冲突解决冲突没有冲突往前走无路可走往回退走到最后是答案。为了加快有无冲突的判断速度可以给每行和两个方向的每条对角线是否有皇后占据建立标志数组。放下一个新皇后做标志回溯时挪动一个旧皇后清除标志。​代码bool chack(int y,int x) { for(int i0;icol;i) { for(int j0;jcol;j) { if(map[y][x]0)return false ; else if((ij)(xy)map[i][j]-1) return false ; else if(map[i][x]-1) return false; else if((y-x)(i-j)map[i][j]-1)return false; } } return true; } void queen(int row) { if(rowcol) { count; //摆放的种数加1 return; } for(int i0;icol;i) { if(chack(row,i)true) { map[row][i]-1; queen(row1); map[row][i]1; } } }问题描述给定一个n*n的棋盘棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后使任意的两个黑皇后都不在同一行、同一列或同一条对角线上任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法n小于等于8。2n皇后问题就是先摆放完一种皇后再用回溯法再摆放第二种皇后其中前面的皇后站过的位置不能再摆放了原理是一样的。代码#include stdio.h //蓝桥杯竞赛基础练习 #include iostream using namespace std; int col; //表示皇后的个数 int co0;// 表示不同的摆放种数 int map[100][100]{0}; //摆放皇后的地图 bool chack2(int y,int x) { for(int i0;icol;i) { for(int j0;jcol;j) { if(map[y][x]0||map[y][x]-1)return false ; else if((ij)(xy)map[i][j]-2) return false ; else if(map[i][x]-2) return false; else if((y-x)(i-j)map[i][j]-2)return false; } } return true; } bool chack(int y,int x) { for(int i0;icol;i) { for(int j0;jcol;j) { if(map[y][x]0)return false ; else if((ij)(xy)map[i][j]-1) return false ; else if(map[i][x]-1) return false; else if((y-x)(i-j)map[i][j]-1)return false; } } return true; } void queen2(int row) { if(rowcol) { co; return; } for(int i0;icol;i) { if(chack2(row,i)true) { map[row][i]-2; queen2(row1); map[row][i]1; } } } void queen(int row) { if(rowcol) { queen2(0); return; } for(int i0;icol;i) { if(chack(row,i)true) { map[row][i]-1; queen(row1); map[row][i]1; } } } int main() { cincol; for(int i0;icol;i) { for(int j0;jcol;j) { cinmap[i][j]; } } for(int i0;icol;i) { for(int j0;jcol;j) { map2[i][j]map[i][j]; } } queen(0); coutco; return 0; }

相关新闻

安伯尼克发布RG34XX掌机后,壹号本公布Game Boy Advance改良版Konkr Pocket Advance

安伯尼克发布RG34XX掌机后,壹号本公布Game Boy Advance改良版Konkr Pocket Advance

安伯尼克与壹号本先后推出掌机新品去年12月,安伯尼克(Anbernic)发布了RG34XX掌机,在掌机市场激起了一定的涟漪。随后,壹号本(Ayaneo)也有了新动作,公布了其对任天堂Game Boy Advance…

2026/7/19 9:46:08阅读更多 →
C语言定时关机恶搞

C语言定时关机恶搞

程序的功能:1 :开机自启动关机以后再开机,程序自动在后台运行,到时间自动关机,关机时间可自己设定。2:窗口是隐藏的,启动的时候没有任何现象,但是在任务管理器能看到3:全…

2026/7/19 9:46:08阅读更多 →
抖音直播间数据抓取技术深度解析:从WebSocket到实时弹幕监控的完整实现

抖音直播间数据抓取技术深度解析:从WebSocket到实时弹幕监控的完整实现

抖音直播间数据抓取技术深度解析:从WebSocket到实时弹幕监控的完整实现 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取(2025最新版本) 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 在…

2026/7/19 9:44:08阅读更多 →
JAVA练习315- 从前序与中序遍历序列构造二叉树

JAVA练习315- 从前序与中序遍历序列构造二叉树

题目概览 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,nu…

2026/7/19 15:15:06阅读更多 →
JAVA练习313- 二叉树的右视图

JAVA练习313- 二叉树的右视图

题目概览 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入:root [1,2,3,null,5,null,4] 输出:[1,3,4] 解释: 示例…

2026/7/19 15:15:06阅读更多 →
Python agent2agent-server 包完全指南:安装、语法、案例与常见错误

Python agent2agent-server 包完全指南:安装、语法、案例与常见错误

1. 引言随着 AI Agent 技术的快速发展,多智能体协作已成为构建复杂自动化系统的关键方向。agent2agent-server 是一个轻量级 Python 包,旨在简化不同 AI Agent 之间的通信与协作。本文将详细介绍该包的安装、核心语法、参数配置,并通过 8 个实…

2026/7/19 15:15:06阅读更多 →
恶意软件分析师必备:5个Unipacker高级技巧解密加壳样本

恶意软件分析师必备:5个Unipacker高级技巧解密加壳样本

恶意软件分析师必备:5个Unipacker高级技巧解密加壳样本 【免费下载链接】unipacker Automatic and platform-independent unpacker for Windows binaries based on emulation 项目地址: https://gitcode.com/gh_mirrors/un/unipacker 你是否曾经面对一个加壳…

2026/7/19 15:15:06阅读更多 →
SecretAgent核心功能解析:从反屏蔽到DOM追踪的全方位能力

SecretAgent核心功能解析:从反屏蔽到DOM追踪的全方位能力

SecretAgent核心功能解析:从反屏蔽到DOM追踪的全方位能力 【免费下载链接】secret-agent The web scraper thats nearly impossible to block - now called ulixee/hero 项目地址: https://gitcode.com/gh_mirrors/se/secret-agent SecretAgent(现…

2026/7/19 15:15:06阅读更多 →
Qwopus3.6-27B-Coder-4bit多语言支持详解:中文、英文、日文等多语言代码生成

Qwopus3.6-27B-Coder-4bit多语言支持详解:中文、英文、日文等多语言代码生成

Qwopus3.6-27B-Coder-4bit多语言支持详解:中文、英文、日文等多语言代码生成 【免费下载链接】Qwopus3.6-27B-Coder-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/Qwopus3.6-27B-Coder-4bit Qwopus3.6-27B-Coder-4bit是一款强大的多语言…

2026/7/19 15:13:06阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/18 22:49:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/19 14:50:26阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/18 18:49:35阅读更多 →