八皇后问题 matlab,Matlab 递归求解八皇后问题
这是递归版本,随后会给出其他版本
function Queens
% 8皇后问题的递归法求解
sol = 1; % 解的个数
queen = zeros(8); % 8*8的棋盘
saferows = true(1,8); % 用来表示每一行是否是安全位置
safeleftdiag = true(1,15); % 用来表示左对角是否安全,在同一个左对角上的元素满足i1+j1 = i2 + j2;
saferightdiag = true(1,15);% 用来表示左对角是否安全,在同一个右对角上的元素满足i1-j1 = i2 - j2;
trycol(1); % 检查第一列是否可以放置皇后
% 该函数用来检查第col列是否可以方位皇后
function trycol(col)
% 对行循环,一行一行的去放
for row = 1 : 8
% 检查第row行第col列的位置是否安全
if safe(row,col)
% 如果安全,该位置被占据,该行和对角不安全
[saferows(row),safeleftdiag(row + col - 1),saferightdiag(row - col + 8)]=deal(false);
queen(row,col) = 1;
% 如果是第8列,说明解完成,输出
if col == 8
fprintf('第%d个解\n',sol);
disp(queen);
sol = sol + 1;
else % 否则,去试探下一列
trycol(col + 1);
end
% 判断完该行,就去判断下一行,应该清除该行的占据信息和安全信息
[saferows(row),safeleftdiag(row + col - 1),saferightdiag(row - col + 8)]=deal(true);
queen(row,col) = 0;
end
end
end
% 该函数用来检查第row行第col列的位置是否安全
function y = safe(row,col)
% 检查该列的行,左对角,右对角是否安全
y = saferows(row) & safeleftdiag(row + col - 1) & saferightdiag(row - col + 8);
end
end
八皇后问题 matlab,Matlab 递归求解八皇后问题相关推荐
- matlab求递归问题,matlab利用递归求解差分方程
导航:网站首页 > matlab利用递归求解差分方程 时间:2018-5-23 matlab利用递归求解差分方程 function y = recur(a,b,n,x,x0,y0); % % y ...
- 非递归求解N皇后问题(回溯法)
一般而言,回溯法可以说是一种穷举法,适合于求解各种深度优先搜索的问题. 回溯法是一种应用广泛的算法.其关键点是解空间树和n元组可行解的定义. 非递归回溯法程序的结构基本上是相同的,该程序的结构可以用求 ...
- 回溯法求解N皇后问题及其时间复杂度分析
回溯法求解N皇后问题及其时间复杂度分析 一.回溯法简介 1. 什么是回溯法? 2. 回溯法的时间复杂度分析 蒙特卡罗方法 蒙特卡罗方法在回溯法求解时间复杂度中的应用 二.回溯法求解N皇后问题 1. 回 ...
- 遗传算法求解八皇后问题—matlab
目录 题目要求 设计思路 1.染色体编码 2.适应度函数 3.选择算子 4.交叉算子 5.变异算子 6.精英替换 运行结果 源程序 题目要求 在8*8的国际象棋棋盘上放置了八个皇后,要求没有一个皇后能 ...
- 实验八.方程根的MATLAB求解
实验内容 实 验 步 骤.过 程 1.(1)二分法 第一步:在 MATLAB 软件,建立一个实现二分法的 MATLAB 函数文件su1.m如下: function x=su1(fname,a,b,e) ...
- 视频教程-三十八课时零基础matlab精通优化算法-Matlab
三十八课时零基础matlab精通优化算法 图像和算法等领域有多年研究和项目经验:指导发表科技核心期刊经验丰富:多次指导数学建模爱好者参赛. 宋星星 ¥100.00 立即订阅 扫码下载「CSDN程序员学 ...
- C语言局部搜索算法(爬山法,模拟退火法,遗传算法)求解八皇后问题
C语言局部算法求解八皇后问题 写在前面 八皇后问题及局部搜索算法 爬山法(hill-climbing searching) 算法介绍 代码实现 退火法(simulated annealing) 算法介 ...
- 递归解决八皇后问题-小昝
引言 由于大学课堂中数据结构中并没有讲一些常见的算法,只是讲的比较简单的定义.所以拿出来暑假时间去研究经典的算法.本文章是研究的八皇后问题.八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 ...
- MATLAB学习笔记(八)
MATLAB学习笔记(八) 一.二维曲线 1.1 plot函数 1.2 fplot函数 二.绘制图形的辅助操作 2.1 图形标注 2.2 坐标控制 2.3 图形保持 2.4 图形窗口分割 三.其他形式 ...
最新文章
- usaco window arear(递归求矩形覆盖面积)
- 腾讯云服务器搭建WampServer环境
- Android踩坑日记:RecyclerView中EditText和ImageView的ViewHolder复用坑
- oracle修改窗口字体大小,jQuery之字体大小的设置方法
- time_t 和 struct tm 及时间戳的正确用法
- 写作新手想少走弯路,尽快赚到钱,必须要知道的
- centos php solr 安装,centos下安装配置solr全纪录
- 最短路径BFS算法matlab,数据结构笔记——最短路径BFS算法
- 【Dongle】【数据库系统原理】模式分解之无损分解
- ( 教程 ) 微信公众号做淘宝优惠券自动查券返利机器人怎么设置?
- 2021期中考试总结
- CSDN 博客添加无水印图片的方法
- 惠普电脑win10关闭自动调节亮度
- 多个视频剪辑成一个视频要怎么操作?
- 梯度下降法算法比较和进一步优化
- 《计算机寓言 - 信息时代的启示》(转载)
- EditPlus 说明
- THULAC:一个高效的中文词法分析工具包
- vscode 下载 安装
- Java 以任意数量空格分割字符串方式