讨论 / 【rqnoj】521
henry1129 2013-06-03 22:08:00
点我顶贴 收藏
那位大神能帮我看下这道题啊,很蛋疼。。。

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.

#1 henry1129@2013-05-30 22:02:00
回复
看来大神都在准备高考和中考。。。

表示中考依然中午去机房,你懂的

#2 开心熊&聪明猪&馋嘴蛙@2013-05-30 22:28:00
回复
[color=blue]呵呵~~
#3 995541152@2013-06-03 22:08:00
回复
好吧,我也在,呵呵

[color=green]中考表示纪中无压力嚯呀~~~~

顺便透露下,沙发、板凳模拟考均760多分……

地毯弱弱的750分但是纪中还是OK跌

没有更多回复了哦~