这是递归版本,随后会给出其他版本

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 递归求解八皇后问题相关推荐

  1. matlab求递归问题,matlab利用递归求解差分方程

    导航:网站首页 > matlab利用递归求解差分方程 时间:2018-5-23 matlab利用递归求解差分方程 function y = recur(a,b,n,x,x0,y0); % % y ...

  2. 非递归求解N皇后问题(回溯法)

    一般而言,回溯法可以说是一种穷举法,适合于求解各种深度优先搜索的问题. 回溯法是一种应用广泛的算法.其关键点是解空间树和n元组可行解的定义. 非递归回溯法程序的结构基本上是相同的,该程序的结构可以用求 ...

  3. 回溯法求解N皇后问题及其时间复杂度分析

    回溯法求解N皇后问题及其时间复杂度分析 一.回溯法简介 1. 什么是回溯法? 2. 回溯法的时间复杂度分析 蒙特卡罗方法 蒙特卡罗方法在回溯法求解时间复杂度中的应用 二.回溯法求解N皇后问题 1. 回 ...

  4. 遗传算法求解八皇后问题—matlab

    目录 题目要求 设计思路 1.染色体编码 2.适应度函数 3.选择算子 4.交叉算子 5.变异算子 6.精英替换 运行结果 源程序 题目要求 在8*8的国际象棋棋盘上放置了八个皇后,要求没有一个皇后能 ...

  5. 实验八.方程根的MATLAB求解

    实验内容 实 验 步 骤.过 程 1.(1)二分法 第一步:在 MATLAB 软件,建立一个实现二分法的 MATLAB 函数文件su1.m如下: function x=su1(fname,a,b,e) ...

  6. 视频教程-三十八课时零基础matlab精通优化算法-Matlab

    三十八课时零基础matlab精通优化算法 图像和算法等领域有多年研究和项目经验:指导发表科技核心期刊经验丰富:多次指导数学建模爱好者参赛. 宋星星 ¥100.00 立即订阅 扫码下载「CSDN程序员学 ...

  7. C语言局部搜索算法(爬山法,模拟退火法,遗传算法)求解八皇后问题

    C语言局部算法求解八皇后问题 写在前面 八皇后问题及局部搜索算法 爬山法(hill-climbing searching) 算法介绍 代码实现 退火法(simulated annealing) 算法介 ...

  8. 递归解决八皇后问题-小昝

    引言 由于大学课堂中数据结构中并没有讲一些常见的算法,只是讲的比较简单的定义.所以拿出来暑假时间去研究经典的算法.本文章是研究的八皇后问题.八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 ...

  9. MATLAB学习笔记(八)

    MATLAB学习笔记(八) 一.二维曲线 1.1 plot函数 1.2 fplot函数 二.绘制图形的辅助操作 2.1 图形标注 2.2 坐标控制 2.3 图形保持 2.4 图形窗口分割 三.其他形式 ...

最新文章

  1. usaco window arear(递归求矩形覆盖面积)
  2. 腾讯云服务器搭建WampServer环境
  3. Android踩坑日记:RecyclerView中EditText和ImageView的ViewHolder复用坑
  4. oracle修改窗口字体大小,jQuery之字体大小的设置方法
  5. time_t 和 struct tm 及时间戳的正确用法
  6. 写作新手想少走弯路,尽快赚到钱,必须要知道的
  7. centos php solr 安装,centos下安装配置solr全纪录
  8. 最短路径BFS算法matlab,数据结构笔记——最短路径BFS算法
  9. 【Dongle】【数据库系统原理】模式分解之无损分解
  10. ( 教程 ) 微信公众号做淘宝优惠券自动查券返利机器人怎么设置?
  11. 2021期中考试总结
  12. CSDN 博客添加无水印图片的方法
  13. 惠普电脑win10关闭自动调节亮度
  14. 多个视频剪辑成一个视频要怎么操作?
  15. 梯度下降法算法比较和进一步优化
  16. 《计算机寓言 - 信息时代的启示》(转载)
  17. EditPlus 说明
  18. THULAC:一个高效的中文词法分析工具包
  19. vscode 下载 安装
  20. Java 以任意数量空格分割字符串方式

热门文章

  1. 迪赛智慧数——饼图(基本饼图):诈骗类型占比
  2. datetime 时间格式说明
  3. 等价类划分法的步骤和示例
  4. AcWing 3443.学分绩点
  5. ib课程三大核心课程详细介绍
  6. Galera(MySQL集群)的安装
  7. 最小二乘估计参数为什么使用残差平方和?
  8. 一棵树有n2个结点度数为2,n3个结点度数为3……nk个结点度数为k,它有几个度数为1的结点?
  9. pytest测试框架系列 - setup和teardown的详细讲解
  10. 【芯片前端】D触发器的功耗的直观分析图