const val:array[1..9,1..9] of longint=
((6,6,6,6,6,6,6,6,6),
(6,7,7,7,7,7,7,7,6),
(6,7,8,8,8,8,8,7,6),
(6,7,8,9,9,9,8,7,6),
(6,7,8,9,10,9,8,7,6),
(6,7,8,9,9,9,8,7,6),
(6,7,8,8,8,8,8,7,6),
(6,7,7,7,7,7,7,7,6),
(6,6,6,6,6,6,6,6,6));
xy:array[1..9] of integer=(1,1,1,4,4,4,7,7,7);
var i,j,sum,max:longint;
a:array[1..9,1..9] of longint;
c:array[1..9,1..9] of boolean;
procedure dfs(dep1,dep2,g:longint);
var k,i,x,y:longint;
p:boolean;
begin
if (dep1=10) and (dep2=10) then begin
if g>max then max:=g;
exit;
end;
inc(dep2);
if dep2=10 then begin
dep2:=1;
inc(dep1);
end;
for i:=1 to 9 do begin
if not c[dep1,dep2] then begin
p:=true;
for x:=xy[dep1] to xy[dep1]+2 do begin
for y:=xy[dep2] to xy[dep2]+2 do begin
if a[x,y]<>i then begin
for k:=1 to 9 do begin
if a[k,dep2]=i then begin
p:=false;
break;
end;
if a[dep1,k]=i then begin
p:=false;
break;
end;
end;
if p then begin
a[dep1,dep2]:=i;
dfs(dep1,dep2,g+i*val[dep1,dep2]);
a[dep1,dep2]:=0;
end;
end;
end;
end;
end else dfs(dep1,dep2,g);
end;
end;
begin
for i:=1 to 9 do begin
for j:=1 to 9 do begin
read(a[i,j]);
end;
readln;
end;
for i:=1 to 9 do begin
for j:=1 to 9 do begin
if a[i,j]<>0 then c[i,j]:=true;
inc(sum,val[i,j]*a[i,j]);
end;
end;
dfs(1,0,0);
writeln(max+sum);
end.
[color=green]中考表示纪中无压力嚯呀~~~~
顺便透露下,沙发、板凳模拟考均760多分……
地毯弱弱的750分但是纪中还是OK跌