1、type arr1=array1.80,1.9 of boolean; arr2=array1.80 of integer; rec=record r,len:integer; h:arr1; l:arr2; end;var h,ht:arr1;l,lt:arr2;h1,h2,h3:array1.9,1.9 of boolean;h4:array1.80 of boolean;a,b,fen:array1.9,1.9 of integer;v:array1.80,1.2 of integer;n,t,max,c:integer;zh:array0.80 of rec;function sma(
2、x,y:integer):integer; 求最小函数beginif xmax then max:=p;end;procedure ready; var i,j,x,y,min,p:integer;beginfor i:=1 to 9 do for j:=1 to 9 do begin read(ai,j); bi,j:=(i-1) div 3*3+(j-1) div 3+1; feni,j:=sma(sma(9-i+1,i),sma(9-j+1,j)+5; if ai,j=0 then begin inc(n); vn,1:=i; vn,2:=j; endelse begin h1i,ai,
3、j:=true; h2j,ai,j:=true; h3bi,j,ai,j:=true; inc(c,ai,j*feni,j); end; end;min:=9; p:=0;for i:=1 to n do begin x:=vi,1; y:=vi,2; for j:=1 to 9 do if (not h1x,j) and (not h2y,j) and (not h3bx,y,j) then begin inc(li); hi,j:=true; end; if limin then begin min:=li; p:=i; end; end;t:=1; zht.r:=p;zh0.h:=h;
4、zh0.l:=l;h4p:=true;end;procedure zhao;var min,p,i:integer;beginmin:=9; p:=0;for i:=1 to n do if not h4i then if lti0 do begin inc(zht.len); if zht.len9 then begin h4zht.r:=false; dec(t); endelse if zht-1.hzht.r,zht.len then expend(zht.len); end;end;=main=beginready;work;if max=0 then writeln(-1) else writeln(max);End。