noip2007C_4_2(棋盘覆盖问题)在一个2k*2k个方格组成的棋盘中恰有一个方格与其他方格不同(图中标记为-1的方格),称之为特殊方格。现用L型(占3个小格)纸片覆盖棋盘上除特殊方格的所有部分,各纸片不得重叠,于是,用到的纸片数恰好是(4^k−1)/3。在下表给出的一个覆盖方案中,k=2,相同的3个数字构成一个纸片。下面给出的程序是用分治法设计的,将棋盘一分为四,依次处理左上角、右上角、左下角、右下角,递归进行。请将程序补充完整。
type
arr1=array[1..65] of integer;
arr2=array[1..65] of arr1;
var
board:arr2;
tile:integer;
size,dr,dc:integer;
procedure chessboard(tr,tc:integer;dr,dc:integer;var size:integer);
var
t,s:integer;
begin
if (size=1) then exit;
t:=tile;
inc(tile);
s:=size div 2;
if (dr<tr+s) and (dc<tc+s) then chessboard(tr,tc,dr,dc,s)
//如果残点在左上角
else
begin
board[tr+s-1][tc+s-1]:=t;//取右下角为新残点
chessboard(tr,tc,tr+s-1,tc+s-1,s);
end;
if (dr<tr+s) and (dc>=tc+s) then chessboard(tr,tc+s,dr,dc,s)
//如果残点在右上角
else
begin
board[tr+s-1][tc