function [chess,row,main,deputy,number]=justtry(i,n,chess,row,main,deputy,number);
复制代码
这一行定义了justtry函数,它接受当前行i、棋盘大小n、棋盘chess、有关行和对角线占用的信息(row、main、deputy)以及当前解的计数number。它将在处理后返回这些变量的更新版本。 - B Z' S x) R+ I& l# Xfor k=1:81 [, V9 |* U! W) w
* `$ M* T3 ^$ I. {0 o
这开始一个循环,迭代处理当前行的每一列(k)。8 m9 Z( ?8 D1 C) P! Q+ D
if row(k)==0 & main(i-k+n)==0 & deputy(i+k-1)==0 7 ?9 Q) V+ S. u% T. H; {( ^* t2 N1 o6 ?1 m5 \) D# ~
这个条件检查当前列、主对角线和副对角线是否没有被占用。如果为真,则考虑在此位置放置皇后。
chess(i,k)=1; 6 R/ [3 W4 a; m4 S
row(k)=1;' W8 E4 ~: s5 g U' V- s) Z6 n
main(i-k+n)=1; 3 S9 i5 z: D8 x/ Y, [. n7 k
deputy(i+k-1)=1;9 ~$ \$ ?) d4 f
复制代码
如果条件满足,就在当前位置放置一个皇后,并更新相应的数组(row、main、deputy)来标记占用。 - _ R: F7 I8 _' ^; g if i==8$ _$ Z* P4 Q, B
8 ]# u0 C' T' f9 s
这检查是否已经到达了最后一行。如果为真,说明找到了一个解。
number=number+1; 9 `# N8 O\" y; u! O' p
chess
复制代码
解的计数增加,并打印当前的棋盘配置。 5 J& D4 K: a3 y1 t6 g* \ else3 X: f6 E& d% g. N R4 U _