function [chess,row,main,deputy,number]=justtry(i,n,chess,row,main,deputy,number);
复制代码
这一行定义了justtry函数,它接受当前行i、棋盘大小n、棋盘chess、有关行和对角线占用的信息(row、main、deputy)以及当前解的计数number。它将在处理后返回这些变量的更新版本。) I, w1 R0 c, u$ S2 b9 F
for k=1:81 I$ D' Z1 x( G2 H
2 m. g5 c7 c. M0 m; b; ^
这开始一个循环,迭代处理当前行的每一列(k)。 . U! R x% f; D, x% y4 R. [if row(k)==0 & main(i-k+n)==0 & deputy(i+k-1)==0 , t3 u8 N( N! Y7 k7 U3 U) @8 d% M# S
这个条件检查当前列、主对角线和副对角线是否没有被占用。如果为真,则考虑在此位置放置皇后。
chess(i,k)=1;8 q7 M. {4 Y! g. @/ T9 V( ~% U3 I3 ^
row(k)=1;4 X6 E7 E m, a( A: {7 m( T
main(i-k+n)=1; 9 h\" c7 f$ ]\" n5 ~9 |
deputy(i+k-1)=1; % U1 B s: `8 g! L* M0 z* k( j
复制代码
如果条件满足,就在当前位置放置一个皇后,并更新相应的数组(row、main、deputy)来标记占用。 " L3 v" }1 g; O8 f Q! J8 ~ if i==8 " h' A/ C! w' W% X- t3 b4 t8 e$ r8 O. H8 c8 A8 b+ t- }
这检查是否已经到达了最后一行。如果为真,说明找到了一个解。
number=number+1;; V5 _$ R8 ~' t( f2 Y
chess
复制代码
解的计数增加,并打印当前的棋盘配置。 , w9 _$ E% c% v) e/ V- i else0 l4 F# }. a0 [+ B