- 积分
- 46
- 注册时间
- 2007-4-28
- 仿真币
-
- 最后登录
- 1970-1-1
|
看了萝卜的程序,http://luobo.ycool.com/post.866141.html
用剔除的思想去求解八皇后问题
决定用arrayfun来重写一下这个问题,发现arrayfun的效率并不高
这样做只为代码的简洁,欢迎大家讨论
-
- clear;clc;close all
- N=8;
- T=N-2;
- rows=1:N; % 皇后所在行的位置
- cols=perms(rows); % 皇后所在列的位置
- S=size(cols,1);
- M=zeros(N,N,S); % 存储所以情况的矩阵
- linearInd = sub2ind(size(M), repmat(rows',1,S), cols', repmat(1:S,N,1));
- M(linearInd) = 1;
- dv=arrayfun(@(k)max([arrayfun(@(x)sum(diag(M(:,:,k),x)),-T:T),arrayfun(@(x)sum(diag(rot90(M(:,:,k)),x)),-T:T)]),1:S);
- M(:,:,dv>1)=[];
复制代码 |
评分
-
1
查看全部评分
-
|