function [chess,row,main,deputy,number]=justtry(i,n,chess,row,main,deputy,number);
复制代码
这一行定义了justtry函数,它接受当前行i、棋盘大小n、棋盘chess、有关行和对角线占用的信息(row、main、deputy)以及当前解的计数number。它将在处理后返回这些变量的更新版本。. T5 s. |4 f) Q4 x
for k=1:84 Y5 B8 h) d( j6 ` K& R
- g3 X4 X* S$ E这开始一个循环,迭代处理当前行的每一列(k)。( V; `' ?% e, I
if row(k)==0 & main(i-k+n)==0 & deputy(i+k-1)==0" F; y9 e+ q3 V3 `" [5 }& R5 h, Y& ?
+ D) A5 I* R* u0 G
这个条件检查当前列、主对角线和副对角线是否没有被占用。如果为真,则考虑在此位置放置皇后。
chess(i,k)=1;- f2 E; |, J: x6 N1 l
row(k)=1;, l, s, f+ t) r+ e& A. Z( E6 l
main(i-k+n)=1;' V\" P& g# |9 d# U
deputy(i+k-1)=1;# T\" Q$ o\" \ h
复制代码
如果条件满足,就在当前位置放置一个皇后,并更新相应的数组(row、main、deputy)来标记占用。 : I2 y* y$ j! a( f. Z' h! F+ Y if i==8 ; u. V3 k# }9 Q$ T# [2 d# b, a: r" X 9 P; g& v+ l: ^这检查是否已经到达了最后一行。如果为真,说明找到了一个解。
number=number+1;5 x9 `8 O4 m\" |5 s5 f% z* b
chess
复制代码
解的计数增加,并打印当前的棋盘配置。- M2 ^" m5 H: r
else+ u1 j% d u$ n