[board,amount]=cover(1,1,2,5,board,size,amount);1 P% y3 [- x9 {. s% N
board(1:size,1:size), f+ {7 Y) n- c/ e! B- s# t
. A6 ]1 V3 o; s* k1 Y3 i
复制代码
function [board,amount]=cover(i,j,k,l,board,size,amount)%(i,j)为左上角 (k,l)残缺 size为规模 amount为片数, [ O3 B, u, D; P( N- @ a
$ O Z7 c2 U6 A
if size==1' J\" o* j2 }, e& u\" H. ?9 \; z: q
return5 \/ ]* B1 D: M* a% k9 t* Q3 H- e: X
end! M4 F% d4 \5 _: y# k7 ?
amount=amount+1;! a$ x0 g: a2 P' B
size=size/2;0 r/ b* t+ k3 `* i. }1 v
if (k<size+i)&(l<size+j)%残缺位于左上棋盘 ! f. ^5 } _+ I _
4 i! E7 H: Q\" q\" ~
board(size+i-1,size+j)=amount;board(size+i,size+j)=amount;board(size+i,size+j-1)=amount;%放置 8 x4 G+ U4 d( G, I
[board,amount]=cover(i,j,k,l,board,size,amount);[board,amount]=cover(i,j+size,size+i-1,j+size,board,size,amount);: I' L2 U2 G# u6 ] X& w E! v2 x
[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);- Q7 W\" B) ~5 t7 d. }* R
elseif (k>=size+i)&(l<size+j)%残缺位于左下棋盘 ) l9 U1 \( @4 a- V; O
board(size+i-1,size+j)=amount;board(size+i,size+j)=amount;board(size+i-1,size+j-1)=amount;%放置' v* ?' @# |) ~ Q. P9 t- C
[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);6 p5 i# @$ c. M' f9 y! Q e