8皇后问题matlab算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

M文件

function PlaceQueen(row,matrix,N)%回溯法放置皇后

if row>N

PrintQueen(N,matrix);%打印棋盘

else

for col=1:N

matrix(row,col)=1;

if row==1||Conflict(row,col,N,matrix)%检测是否冲突

PlaceQueen(row+1,matrix,N);

end

matrix(row,col)=0;

end

end

%子函数:检测冲突

function result=Conflict(row,col,N,matrix)%检测是否冲突

result=1;

for i=1:row-1

for j=1:N

if matrix(i,j)==1

if ((j==col)||(abs(row-i)==abs(col-j)))%是否产生冲突:在同一直线,斜线上

result=0;

break;

end

end

end

if result==0

break;

end

end

%子函数:打印棋盘信息

function PrintQueen(N,matrix)

global solutionNum; %定义全局变量,来累积方法数 solutionNum=solutionNum+1;

disp(['第',num2str(solutionNum),'种方法:'])

disp(matrix)

脚本文件

clear all

clc

global solutionNum;

solutionNum=0;%全局变量记录方法数

N=8;%皇后个数

matrix=zeros(N);%存储皇后位置信息

PlaceQueen(1,matrix,N)%调用放置方法

相关文档
最新文档