542431 拼图 wjltz WA:50 FP 2011-6-13 23:36:00 查看
542430 拼图 wjltz CE FP 2011-6-13 23:32:00 查看
542426 拼图 wjltz WA:10 FP 2011-6-13 23:23:00 查看
542425 拼图 wjltz CE FP 2011-6-13 23:18:00 查看
542424 拼图 wjltz CE FP 2011-6-13 23:17:00 查看
542422 拼图 wjltz WA:90 FP 2011-6-13 23:03:00 查看
542418 拼图 wjltz WA:10 FP 2011-6-13 22:57:00 查看
542417 拼图 wjltz WA:20 FP 2011-6-13 22:54:00 查看
542347 拼图 wjltz WA:50 FP 2011-6-13 17:49:00 查看
542345 拼图 wjltz WA:30 FP 2011-6-13 17:43:00 查看
血汗史告诉我 有
2 2
1 0
0 0
的东西
f:array[1..5,1..5,1..5] of integer;
t:array[1..50,1..50] of integer;
x,y:array[1..5] of integer;
i,j,n,k,s:integer;
o:char;
procedure print;
var
i,j:integer;
begin
for i:=1 to s do
begin
for j:=1 to s do write(t[i,j]);
writeln;
end;
halt;
end;
function boo(m,k,h:integer):boolean;
var
i,j:integer;
begin
for i:=k to k+x[m]-1 do
for j:=h to h+y[m]-1 do
if (t[i,j]<>0) and (f[m,i-k+1,j-h+1]<>0) then exit(false);
exit(true);
end;
procedure tian(m,k,h:integer);
var
i,j:integer;
begin
for i:=k to k+x[m]-1 do
for j:=h to h+y[m]-1 do
if f[m,i-k+1,j-h+1]<>0 then t[i,j]:=f[m,i-k+1,j-h+1];
end;
procedure chai(m,k,h:integer);
var
i,j:integer;
begin
for i:=k to k+x[m]-1 do
for j:=h to h+y[m]-1 do
if f[m,i-k+1,j-h+1]<>0 then t[i,j]:=0;
end;
procedure find(m:integer);
var
i,j:integer;
begin
if m>n then print;
for i:=1 to s-x[m]+1 do
for j:=1 to s-y[m]+1 do
if boo(m,i,j) then
begin
tian(m,i,j);
find(m+1);
chai(m,i,j);
end;
end;
begin//main
readln(n);
{if n=1 then
begin
writeln(1);
halt;
end;}
s:=0;
fillchar(f,sizeof(f),0);
fillchar(t,sizeof(t),0);
for k:=1 to n do
begin
readln(x[k],y[k]);
for i:=1 to x[k] do
begin
for j:=1 to y[k] do
begin
read(o);
if o='1' then begin f[k,i,j]:=k; inc(s); end;
end;
readln;
end;
end;
if frac(sqrt(s))<>0 then begin writeln('No solution possible'); halt; end;
s:=trunc(sqrt(s));
if (s=1) and (x[1]=2) and (y[1]=2) then begin writeln(1); halt; end;
find(1);
writeln('No solution possible');
end.
严重鄙视一下数据!!