function [chess,row,main,deputy,number]=justtry(i,n,chess,row,main,deputy,number);
复制代码
这一行定义了justtry函数,它接受当前行i、棋盘大小n、棋盘chess、有关行和对角线占用的信息(row、main、deputy)以及当前解的计数number。它将在处理后返回这些变量的更新版本。; o4 T) |; @4 r4 O. V
for k=1:8 % l6 g/ C- C, D; i! r! e3 O2 W7 S8 ~% J# d0 G' w8 q, f/ F1 ~/ v
这开始一个循环,迭代处理当前行的每一列(k)。& c" l+ e) T9 R5 v, S u: B
if row(k)==0 & main(i-k+n)==0 & deputy(i+k-1)==0 ( p- F! w1 P: s3 N* ]# f1 z3 e# V4 t) t9 Z7 j# B! B8 U
这个条件检查当前列、主对角线和副对角线是否没有被占用。如果为真,则考虑在此位置放置皇后。
chess(i,k)=1; # C! O( G8 J! b# |
row(k)=1; R4 z7 C/ ^, P% e: c o
main(i-k+n)=1;& r2 l1 Y# b- d3 W* w
deputy(i+k-1)=1;5 t* k0 ~0 Z$ T+ c* y
复制代码
如果条件满足,就在当前位置放置一个皇后,并更新相应的数组(row、main、deputy)来标记占用。 e" t- C, X& ~% d
if i==8' |1 A* W9 n2 V b8 Z
8 i" c( k. m1 `: B8 r' Y
这检查是否已经到达了最后一行。如果为真,说明找到了一个解。