[board,amount]=cover(1,1,2,5,board,size,amount); + I) b! a( L1 B* {- m0 G
board(1:size,1:size)( T R2 N$ A. t\" o1 V
9 X0 z6 R8 _0 L: s
复制代码
function [board,amount]=cover(i,j,k,l,board,size,amount)%(i,j)为左上角 (k,l)残缺 size为规模 amount为片数 / e% m/ z/ W3 M6 {2 W\" h) x
4 }6 v+ m/ u! I; z) H# h4 [+ X
if size==1 \" M a6 u7 X\" G; z
return* |3 d' Z4 h9 |: Z2 u
end * K: v/ k' I& O/ I9 j+ J S- Z& f
amount=amount+1;; S, X) `* v( N4 Z) O: D
size=size/2;! y# x) _% U9 M, o
if (k<size+i)&(l<size+j)%残缺位于左上棋盘 4 `! R\" V# w/ d* t! R. |+ N3 |
% Q% H9 F3 n, [. a
board(size+i-1,size+j)=amount;board(size+i,size+j)=amount;board(size+i,size+j-1)=amount;%放置* J7 { L( J* K# B
[board,amount]=cover(i,j,k,l,board,size,amount);[board,amount]=cover(i,j+size,size+i-1,j+size,board,size,amount); ( b8 r: a' E* b. `$ W7 _ {
[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);/ K4 _+ f7 j3 x6 g C& t- f
board(size+i-1,size+j)=amount;board(size+i,size+j)=amount;board(size+i-1,size+j-1)=amount;%放置! ~9 H; v$ E\" F: p5 G
[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); / p* W/ V' p D: o
[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); 4 s8 s4 R, I# ?/ m\" W
elseif (k<size+i)&(l>=size+j)%残缺位于右上棋盘/ C% z( x; W0 V/ I
board(size+i,size+j-1)=amount;board(size+i,size+j)=amount;board(size+i-1,size+j-1)=amount;%放置. F+ C8 _: o% |3 \$ }1 K
[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); - X\" z, s9 ~6 d% ]6 n$ r `9 T
[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); 4 C! I2 x z/ Q2 l4 f
elseif (k>=size+i)&(l>=size+j)%残缺位于右下棋盘 % a+ s2 Q: f# O C( _2 T
board(size+i,size+j-1)=amount;board(size+i-1,size+j)=amount;board(size+i-1,size+j-1)=amount;%放置 # n( m7 x: a) |
[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);8 g( G& k- ? G1 X! h