残盘覆盖

来源:互联网 发布:iphone写作软件 编辑:程序博客网 时间:2024/05/01 17:48
constDIM=8;var tile:integer;board:array [1..DIM,1..DIM] of integer;procedure debug;vari,j:integer;beginfor i:=1 to DIM dobeginfor j:=1 to DIM dobeginwrite(board[i,j]:5);end;writeln;end;end;procedure tileboard(tr,tc,dr,dc,size:integer);vars,t:integer;beginif size=1 then exit;s:=size div 2;t:=tile;inc(tile);if (dr<tr+s) and (dc<tc+s) thenbegintileboard(tr,tc,dr,dc,s)endelse beginboard[tr+s-1,tc+s-1]:=t;tileboard(tr,tc,tr+s-1,tc+s-1,s);end;if (dr<tr+s) and (dc>=tc+s) then//残点在右上方begintileboard(tr,tc+s,dr,dc,s);endelsebeginboard[tr+s-1,tc+s]:=t;tileboard(tr,tc+s,tr+s-1,tc+s,s);end;if (dr>=tr+s) and (dc<tc+s) then//残点在左下方begintileboard(tr+s,tc,dr,dc,s);endelsebeginboard[tr+s,tc+s-1]:=t;tileboard(tr+s,tc,tr+s,tc+s-1,s);end;if (dr>=tr+s) and (dc>=tc+s) then//残点在右下方begintileboard(tr+s,tc+s,dr,dc,s);endelsebeginboard[tr+s,tc+s]:=t;tileboard(tr+s,tc+s,tr+s,tc+s,s);end;end;begintile:=1;//debug;tileboard(1,1,3,3,8);debug;end.

原创粉丝点击