[board,amount]=cover(1,1,2,5,board,size,amount); % E9 L! r5 T+ f0 M\" z4 N
board(1:size,1:size)5 f# g7 f! ^- Z( q
( _: u G0 l- f |+ J$ v
复制代码
function [board,amount]=cover(i,j,k,l,board,size,amount)%(i,j)为左上角 (k,l)残缺 size为规模 amount为片数8 s2 W/ P$ \! H1 o4 t L5 h( x
4 W; ^- I w; H [$ ]* W5 l
if size==1 U, @; D& h+ B) O9 q
return % r9 k( Z6 w6 Q% F
end0 M4 n1 Z) O7 x M) `
amount=amount+1;3 n! S0 L/ R( G8 H- ?1 \+ S/ g$ t
size=size/2;; k* g5 ] i- _3 P2 } k* _
if (k<size+i)&(l<size+j)%残缺位于左上棋盘 1 y\" U5 E# U. \
; ^3 z7 i. b& H0 s\" s3 r4 C e4 I
board(size+i-1,size+j)=amount;board(size+i,size+j)=amount;board(size+i,size+j-1)=amount;%放置& ^% G- x$ W9 a
[board,amount]=cover(i,j,k,l,board,size,amount);[board,amount]=cover(i,j+size,size+i-1,j+size,board,size,amount); y9 Y4 g1 u8 e! S9 b
[board,amount]=cover(size+i,size+j,size+i,size+j,board,size,amount);[board,amount]=cover(i+size,j,i+size,j+size-1,board,size,amount); 1 t( s( i& a5 i) y& i\" B
elseif (k>=size+i)&(l<size+j)%残缺位于左下棋盘 3 A6 X! L0 G+ r8 r\" U
board(size+i-1,size+j)=amount;board(size+i,size+j)=amount;board(size+i-1,size+j-1)=amount;%放置 5 \* D' m* q# b! \& E
[board,amount]=cover(i+size,j,k,l,board,size,amount);[board,amount]=cover(i,j+size,size+i-1,j+size,board,size,amount); : |1 |8 j/ K( q0 l8 M7 s
[board,amount]=cover(size+i,size+j,size+i,size+j,board,size,amount);[board,amount]=cover(i,j,i+size-1,j+size-1,board,size,amount);8 ?1 R: }' C$ R
elseif (k<size+i)&(l>=size+j)%残缺位于右上棋盘* `. o0 G\" H2 ~# Z9 u
board(size+i,size+j-1)=amount;board(size+i,size+j)=amount;board(size+i-1,size+j-1)=amount;%放置, P. { q- {9 A- ^/ K, h
[board,amount]=cover(i,j+size,k,l,board,size,amount);[board,amount]=cover(i,j,i+size-1,j+size-1,board,size,amount); + B. ~. \& f5 L* V D
[board,amount]=cover(size+i,size+j,size+i,size+j,board,size,amount);[board,amount]=cover(i+size,j,i+size,j+size-1,board,size,amount);/ P\" p2 w! G0 y5 u2 X
elseif (k>=size+i)&(l>=size+j)%残缺位于右下棋盘+ T6 u\" R- s1 a\" J\" b
board(size+i,size+j-1)=amount;board(size+i-1,size+j)=amount;board(size+i-1,size+j-1)=amount;%放置 ) `( u$ V4 h\" {8 L\" ?) H
[board,amount]=cover(size+i,size+j,k,l,board,size,amount);[board,amount]=cover(i,j+size,size+i-1,j+size,board,size,amount);; v$ m) u$ t5 ]0 @$ ~3 q