[board,amount]=cover(1,1,2,5,board,size,amount); # ]9 I: m7 t: l3 [ \7 f
board(1:size,1:size) 7 T3 F9 B+ P- u, s W2 q3 W
% A1 ^) ^0 Y* E7 @
复制代码
function [board,amount]=cover(i,j,k,l,board,size,amount)%(i,j)为左上角 (k,l)残缺 size为规模 amount为片数/ t6 m- d ?\" a
; `3 V\" e9 Q; Z, \$ m! r: f! ~) e7 f
if size==1 9 A5 D$ R; g0 M/ v: ~1 X% L+ \
return8 R; E$ }: C& e5 n; s, z
end & T\" S/ Z0 v3 E; V; W. k
amount=amount+1;% k2 b' y4 S1 s+ H) M
size=size/2; 4 b+ U+ Q: P6 k1 M2 O6 E
if (k<size+i)&(l<size+j)%残缺位于左上棋盘\" y7 X0 J4 Z: l6 K# k
# {. d5 u& G6 p5 E3 L8 y( \
board(size+i-1,size+j)=amount;board(size+i,size+j)=amount;board(size+i,size+j-1)=amount;%放置 $ E6 l2 x2 d2 [\" V0 k9 O
[board,amount]=cover(i,j,k,l,board,size,amount);[board,amount]=cover(i,j+size,size+i-1,j+size,board,size,amount); ( P. g6 D# W6 \+ X* E, Q
[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); 8 C* Y& y\" u, W/ K3 l2 N
elseif (k>=size+i)&(l<size+j)%残缺位于左下棋盘 & d/ h- B5 ^4 O. G K- }
board(size+i-1,size+j)=amount;board(size+i,size+j)=amount;board(size+i-1,size+j-1)=amount;%放置 ; K- b) f2 ~2 P