八皇后问题-回溯法(MATLAB)
原创文章,转载请注明:八皇后问题-回溯法(MATLAB) By Lucio.Yang
1.问题描述
八皇后问题是十九世纪著名数学家高斯于1850年提出的。问题是:在8*8的棋盘上摆放8个皇后,使其不能互相攻击,即任意的两个皇后不能处在同意行,同一列,或同意斜线上。
2.matlab代码
- function PlaceQueen(row,stack,N)%回溯法放置皇后
- if row>N
- PrintQueen(N,stack);%打印棋盘
- else
- for col=1:N
- stack(row)=col;
- if row==1||Conflict(row,col,N,stack)%检测是否冲突
- PlaceQueen(row+1,stack,N);
- end
- stack(row)=0;
- end
- end
- %子函数:检测冲突
- function result=Conflict(row,col,N,stack)%检测是否冲突
- result=1;
- for i=1:row-1
- if stack(i)~=0
- if ((stack(i)==col)||(abs(row-i)==abs(col-stack(i))))%是否产生冲突:在同一直线,斜线上
- result=0;
- break;
- end
- if result==0
- break;
- end
- end
- end
- %子函数:打印棋盘信息
- function PrintQueen(N,stack)
- global solutionNum; %定义全局变量,来累积方法数
- solutionNum=solutionNum+1;
- disp(['第',num2str(solutionNum),'种方法:'])
- for i=1:N
- for j=1:N
- if j==stack(i)
- fprintf('1 ')
- else
- fprintf('0 ')
- end
- end
- fprintf('\n')
- end
PlaceQueen.m
- clear all
- clc
- global solutionNum;
- solutionNum=0;%全局变量记录方法数
- N=8;%皇后个数
- %matrix=zeros(N);%存储皇后位置信息
- stack=[0 0 0 0 0 0 0 0];
- PlaceQueen(1,stack,N)%调用放置方法
queen.m
八皇后问题-回溯法(MATLAB)的更多相关文章
- 八皇后,回溯与递归(Python实现)
八皇后问题是十九世纪著名的数学家高斯1850年提出 .以下为python语句的八皇后代码,摘自<Python基础教程>,代码相对于其他语言,来得短小且一次性可以打印出92种结果.同时可以扩 ...
- HDU 2553 n皇后问题(回溯法)
DFS Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description ...
- 算法入门经典-第七章 例题7-4-1 拓展 n皇后问题 回溯法
实际上回溯法有暴力破解的意思在里面,解决一个问题,一路走到底,路无法通,返回寻找另 一条路. 回溯法可以解决很多的问题,如:N皇后问题和迷宫问题. 一.概念 回溯算法实际类似枚举的搜索尝试过程,主 ...
- N皇后问题 回溯法 C/C++
一:问题描述 N皇后问题(含八皇后问题的拓展,规则同四皇后):在N*N的棋盘上,放置N个皇后,要求每一横行每一列,每一对角线上均只能放置一个皇后,求解可能的方案及方案数. 二:代码及结果如下 #inc ...
- N皇后问题--回溯法
1.引子 中国有一句古话,叫做“不撞南墙不回头",生动的说明了一个人的固执,有点贬义,但是在软件编程中,这种思路确是一种解决问题最简单的算法,它通过一种类似于蛮干的思路,一步一步地往前走,每 ...
- noj算法 8皇后打印 回溯法
描述: 输出8皇后问题所有结果. 输入: 没有输入. 输出: 每个结果第一行是No n:的形式,n表示输出的是第几个结果:下面8行,每行8个字符,‘A’表示皇后,‘.’表示空格.不同的结果中,先输出第 ...
- JAVA实现N皇后问题(回溯法)
package com.leetCode; /** * Follow up for N-Queens problem. Now, instead outputting board configurat ...
- 8皇后-----回溯法C++编程练习
/* * 八皇后问题回溯法编程练习 * 在8×8的棋盘上,放置8个皇后,两个皇后之间不能两两攻击 * 也即,直线,垂直45度.135度方向不能出现两个皇后 * * copyright Michael ...
- 八皇后问题——列出所有的解,可推至N皇后
<数据结构>--邓俊辉版本 读书笔记 今天学习了回溯法,有两道习题,一道N皇后,一道迷宫寻径.今天,先解决N皇后问题.由于笔者 擅长java,所以用java重现了八皇后问题. 注意是jav ...
随机推荐
- Python之lxml
作者:Shane 出处:http://bluescorpio.cnblogs.com lxml takes all the pain out of XML. Stephan Richter lxml是 ...
- Java SSH框架学习(入门)
SSH就是 struts+spring+hibernate 的一个集成框架,是java中一种流行的JAVA WEB 应用程序开源框架.由于我最熟悉的还是ASP.NET的的MVC和Python的Djan ...
- openstack之neutron linuxbridge + vlan组网
linuxbridge是和linuxbridge plugin匹配的core agent,主要实现L2层的功能和security group的功能.security group的功能逐渐会被neutr ...
- opacity在IE6~8下无效果,解决的办法
opacity在IE6~8下无效果,解决的办法 问题出现时rgba()在ie6下不出效果,最后查到是opacity的问题. opacity是css3时出现的,目前主流浏览器都支持.but老IE是个麻烦 ...
- JavaScript引用类型之Array数组之强大的splice()方法
splice()方法可以说是Array数组最强大的方法,他的用法很多,主要用法是向数组的中部插入项! 下面是它的用法: arrayObject.splice(index,howmany,element ...
- SQL练习之不破坏应用程序现有查询的修改模式
当我还是一个菜鸟的时候,当然现在也是,当我的软件需求发生变化时,并且数据库设计同样要求发生变化,我通常会放弃原有的代码(或者对原有的代码进行大改),先在我知道了两个不破坏应用程序现有查询的修改模式,下 ...
- JavaScript之获取和设置元素属性
1.与我前面的随笔获取元素的那些方法不同http://www.cnblogs.com/GreenLeaves/p/5689075.html 获取元素属性的方法getAttribute()不属于docu ...
- FINDPEAKS - matlab函数
FINDPEAKS Find local peaks in data PKS = FINDPEAKS(X) finds local peaks in the data vector X. A loca ...
- iOS App集成Apple Pay教程(附示例代码)
苹果在本周一发布了iOS 8.1版本,并正式开放了Apple Pay支付系统.Apple Pay是一个基于NFC的支付系统,不久将被数以万计的线下零售商店予以支持.即便这项科技并不是彻底的突破性进展, ...
- VS2013 快捷键 与 RESHARPER 冲突
1.VS设置工具-->选项-->环境-->键盘-->重置 2.RESHARPER -->Options-->Environment → Keyboard & ...