记录编号 | 4252 | 评测结果 | AAAAA | ||
---|---|---|---|---|---|
题目名称 | 画海岛地图 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | Pascal | 运行时间 | 0.437 s | ||
提交时间 | 2008-10-15 21:11:25 | 内存使用 | 0.11 MiB | ||
program island; type shuzu=array[1..9,0..9] of integer; shuzu1=array[1..9,1..9] of char; var fl,fh:shuzu; ans:shuzu1; i,j,k,m,n,temp,c:longint; f1,f2:text; procedure print; var i,j:longint; begin writeln(f2,c); for i:=1 to n do begin for j:=1 to n do write(f2,ans[i,j]); writeln(f2); end; end; function pd(ans:shuzu1):boolean; var i,j,temp:longint; s:array[0..8] of integer; begin for i:=1 to n do begin j:=1; fillchar(s,sizeof(s),0); while (j<=n) do begin if (ans[j,i]='*')and(j=1)or(ans[j,i]='*')and(ans[j-1,i]=' ') then begin inc(s[0]); inc(s[s[0]]); end; if (ans[j,i]='*')and(j<>1)and(ans[j-1,i]='*') then inc(s[s[0]]); inc(j); end; for k:=1 to s[0] do if (s[0]<>fl[i,0])or(fl[i,k]<>s[k]) then begin pd:=false; exit; end; end; pd:=true; end; procedure search(i,j,k:longint); var x,y,p,q,r,v:longint; begin if i<=n then begin for x:=j to n-fh[i,fh[i,0]]+1 do begin for y:=x to fh[i,k]+x-1 do ans[i,y]:='*'; p:=i; q:=y+2; r:=k+1; if k=fh[i,0] then begin p:=i+1; q:=1; r:=1; end; search(p,q,r); for y:=x to fh[i,k]+x-1 do ans[i,y]:=' '; end; end else begin if pd(ans) then begin c:=c+1;print; end; exit; end; end; begin assign(f1,'island.in');reset(f1); assign(f2,'island.out');rewrite(f2); readln(f1,n); c:=0; for i:=1 to n do begin fh[i,0]:=0; fl[i,0]:=0; read(f1,temp); j:=0; while temp<>0 do begin inc(fh[i,0]); inc(j); fh[i,j]:=temp; read(f1,temp); end; readln(f1); end; for i:=1 to n do begin read(f1,temp); j:=0; while temp<>0 do begin inc(fl[i,0]); inc(j); fl[i,j]:=temp; read(f1,temp); end; readln(f1); end; close(f1); for i:=1 to n do for j:=1 to n do ans[i,j]:=' '; search(1,1,1); if c=0 then writeln(f2,'no'); close(f2); end.