八N皇后问题

article/2025/7/5 9:57:51

1 问题的提出

在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法
 


我们的任务就是用MATLAB进行求解

2 数学模型的构建

首先我们分析题目就是
任意两个皇后都不能处于同一行、同一列或同一斜线上

global board sum;
board = zeros(8,8);
sum = 0;
dfs(1);
disp(sum);function dfs(x)global board sum;if x > 8sum = sum + 1;return;endfor i = 1:8if issafe(x,i,board)board(x,i) = 1;dfs(x+1);board(x,i) = 0;endend
endfunction safe = issafe(row, col, board)safe = true;% 检查列for i = 1:row-1if board(i, col) == 1safe = false;return;endend% 检查右上角i = row - 1;j = col + 1;while i >= 1 && j <= 8if board(i, j) == 1safe = false;return;endi = i - 1;j = j + 1;end% 检查左上角i = row - 1;j = col - 1;while i >= 1 && j >= 1if board(i, j) == 1safe = false;return;endi = i - 1;j = j - 1;end
end

我们要学习这里面的思想

3 模块1 dfs搜索函数

function dfs(x)global board sum;if x > 8sum = sum + 1;return;endfor i = 1:8if issafe(x,i,board)board(x,i) = 1;dfs(x+1);board(x,i) = 0;endend
end

我们有8个皇后,那就是for循环循环8行,每次放置一个棋子就进行一次判断,然后判断这个棋子可不可以落在这里如过可以那么久进入到下一行,x进行+1秒如果不可以的话,那么就进入这一行的下一个格子下一个,这就是枚举8行8列
当这个x > 8的话,那么就是放置成功了

4 检查模块

function safe = issafe(row, col, board)safe = true;% 检查列for i = 1:row-1if board(i, col) == 1safe = false;return;endend% 检查右上角i = row - 1;j = col + 1;while i >= 1 && j <= 8if board(i, j) == 1safe = false;return;endi = i - 1;j = j + 1;end% 检查左上角i = row - 1;j = col - 1;while i >= 1 && j >= 1if board(i, j) == 1safe = false;return;endi = i - 1;j = j - 1;end
end

首先我们的行是已经操作完的了,就是在判断行的话是在递归的过程中进行讨论的,然后就是只需要判断这个列是否成立就好了,然后斜边的话,那不就是直接判断左上角和右上角就好了
左上角和右上角的检查

    % 检查右上角i = row - 1;j = col + 1;while i >= 1 && j <= 8if board(i, j) == 1safe = false;return;endi = i - 1;j = j + 1;end

我们知道右上角就是不断的进行加1嘛,这个行的话,列就是不断地进行减1,左上角就是反着地


http://www.hkcw.cn/article/XthxSDbPGn.shtml

相关文章

CRM 系统核心优势解析:数字化客户管理如何驱动企业增长

企业在客户管理中常面临数据分散、互动低效、决策滞后等挑战&#xff0c;传统管理方式难以满足数字化时代的客户运营需求。CRM&#xff08;客户关系管理&#xff09;系统作为整合客户数据、优化互动流程的核心工具&#xff0c;通过数字化手段重构企业与客户的连接模式。本文系统…

Windows SSDT Hook(一)

前言 虽然在 Windows Vista 以后的 64 位操作系统中&#xff0c;PatchGuard&#xff08;内核补丁保护机制&#xff09;对 SSDT&#xff08;System Service Dispatch Table&#xff0c;系统服务分派表&#xff09;实施了强力保护&#xff0c;直接 Hook SSDT 的方式几乎不可行&a…

centos7.6阿里云镜像各个版本介绍

&#xff08;水一期&#xff09; Index of /centos-vault/centos/7.6.1810/isos/x86_64/ File NameFile SizeDateParent directory/--0_README.txt2.4 KB2018-12-01 21:21CentOS-7-x86_64-DVD-1810.iso4.3 GB2018-11-26 07:55CentOS-7-x86_64-DVD-1810.torrent86.0 KB2018-12-…

在大型 GIS 数据库中按属性高效溶解相邻多边形

您是否拥有一个大型 GIS 数据集&#xff0c;并希望高效地融合所有具有相同属性的相邻多边形&#xff1f;在本文中&#xff0c;我将分享如何使用 PostGIS 处理包含超过 75 万行数据的土地利用数据集来实现这一目标。 我将以维多利亚州土地利用数据集为例。该数据可从Data VIC免…

Spring Web高保真Axure动态交互元件库

在当今快速发展的Web设计与开发领域&#xff0c;设计师和开发者们一直在寻找高效、高质量的工具来加速原型设计过程。今天&#xff0c;我要向大家介绍一款专为Web设计与开发领域量身打造的Axure交互元件集合——Spring UI Web端高保真动态交互元件库。这款元件库不仅全面且易于…

Chrome插件学习笔记(二)

Chrome插件学习笔记&#xff08;二&#xff09; 参考文章&#xff1a; https://developer.chrome.com/docs/extensions/reference/api/sidePanel?hlzh-cnhttps://developer.chrome.com/docs/extensions/reference/api/webRequest?hlzh-cnhttps://developer.chrome.com/docs/e…

判断质数的基础方法

判断一个数是否为质数&#xff1a;基础方法(运算效率较慢) 另一种运用API来提高运算效率&#xff1a; 以下是添加了详细注释的代码版本&#xff0c;并优化了部分逻辑&#xff1a; package test;public class test5 {public static void main(String[] args) {//判断一个数是否…

列表单独展开收起同时关闭其余子项的问题优化

如图所示&#xff0c;当在列表中&#xff0c;需要分别单独点开子选项时&#xff0c;直接这样用一个index参数判断即可&#xff0c;非常简单方便&#xff0c;只需要满足点开当前index,然后想同index用null值自动关闭即可

java25

1.可变参数 2.集合工具类Collections 3.综合练习 集合嵌套&#xff1a; 4.不可变集合 JDK9以后才能用 这个静态方法名是of&#xff0c;返回值是List<E>,是泛型方法。 JDK10以后的简化版&#xff1a; 5.Stream流 爽一下&#xff1a; 简化后的: 注意&#xff1a;stream.ma…

中方:南南合作始终是对外合作优先方向

当地时间5月30日,联合国南南合作基金30周年纪念活动在纽约联合国总部举行。中国常驻联合国代表傅聪在活动致辞中表示,中方高度赞赏基金支持的务实合作成果。中方表示,始终坚定支持联合国发展支柱,始终坚定支持真正的多边主义,始终将南南合作作为对外合作的优先方向。中方指…

在线博客系统【测试报告】

&#x1f552; 一. 项目背景 由于纸质笔记容易丢失&#xff0c;携带不变&#xff0c;为了方便自己学习的过程中记录笔记&#xff0c;特开发了这个博客系统。这个系统后端采用 SpringBoot MyBatis SpringMVC &#xff1b;前端使用Html CSS JS&#xff1b;数据库使用的是Mysq…

近期手上的一个基于Function Grap(类AWS的Lambda)小项目的改造引发的思考

函数式Function是云计算里最近几年流行起来的新的架构和模式&#xff0c;因为它不依赖云主机&#xff0c;非常轻量&#xff0c;按需使用&#xff0c;甚至是免费使用&#xff0c;特别适合哪种数据同步&#xff0c;数据转发&#xff0c;本身不需要保存数据的业务场景&#xff0c;…

C++ - 模板(一) #泛型编程 #函数模板 #类模板

文章目录 前言 一、泛型编程 二、函数模板 1、函数模板的概念 2、函数模板的格式 3、函数模板的原理 4、函数模板的实例化 1、隐式实例化&#xff1a; 2、显式实例化&#xff1a; 5、模板参数的匹配原则 三、类模板 1、类模板的定义格式 2、类模板的实例化 总结 …

智能制造全场景数字化解决方案

制造企业数字化转型面临的挑战 数智化转型已成为中国制造业高质量发展的关键战略。面对全球制造业格局调整&#xff0c;如何快速构建覆盖全业务流程的可视化应用&#xff0c;通过数据驱动的方式为企业经营管理、预警监测、质量管控、决策支持提供全面支撑&#xff0c;是企业面…

Vue-收集表单信息

收集表单信息 Input label for 和 input id 关联, 点击账号标签 也能聚焦 input 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>表单数据</title><!-- 引入Vue --><scrip…

篮球分组问题讨论

1 问题概述 问题&#xff1a;有5支球队在同一块场地上进行单循环赛,共要进行10场比赛。下表是一个赛程安排&#xff0c;有些队觉得不公平。研究以下问题 A B C D E 每两场比赛间相隔场次数 A X 1 9 3 6 1, 2, 2 B 1 X 2 5 8 0, 2, 2 C 9 2 X 7 10 4…

成都鼎讯--通信干扰设备功能全解析

在现代电子战与通信对抗领域&#xff0c;一款高性能的通信干扰设备是掌握电磁频谱主动权的关键。本文将深入解析一款先进的通信干扰设备&#xff0c;其凭借多频段覆盖、多通道并行、多样化调制方式及灵活供电等特性&#xff0c;成为部队、科研院所等机构在电磁对抗训练与研究中…

vscode中让文件夹一直保持展开不折叠

vscode中让文件夹一直保持展开不折叠 问题 很多小伙伴使用vscode发现空文件夹会折叠显示, 让人看起来非常难受, 如下图 解决办法 首先打开设置->setting, 搜索compact Folders, 去掉勾选即可, 如下图所示 效果如下 看起来非常爽 ! ! !

中国城市间地理距离矩阵(2024)

1825 中国城市间地理距离矩阵(2024) 数据简介 中国城市间地理距离矩阵数据集&#xff0c;通过审图号GS(2024)0650的中国城市地图在Albers投影坐标系中进行计算得出矩阵表格&#xff0c;单位为KM&#xff0c;方便大家研究使用。 中国城市地理距离矩阵数据通过计算城市中心距离…

Linux中的shell脚本

什么是shell脚本 shell脚本是文本的一种shell脚本是可以运行的文本shell脚本的内容是由逻辑和数据组成shell脚本是解释型语言 用file命令可以查看文件是否是一个脚本文件 file filename 脚本书写规范 注释 单行注释 使用#号来进行单行注释 多行注释 使用 : " 注释内容…