讨论 / 各位牛哥给瞧瞧,怎么一组也过不了~~~~~>_<
KFC 2010-08-21 19:25:00
点我顶贴 收藏 删除
除了超时的,其他的竟是同一错误答案!

VAR i,j,n,l,sum,big:integer;ok:boolean;

fenshu:integer;

a:array[0..62]of integer;

v:array[0..3010]of boolean;

gun:array[0..3010]of integer;

procedure dfs(ii:integer);

var iii:integer;

begin

if ii=n+1 then

begin

ok:=true;

for iii:=2 to fenshu do

if gun[iii]<>gun[iii-1] then

begin

ok:=false;

break;

end;

if ok then begin write(i);halt;end

else exit;

end;

for iii:=1 to fenshu do

if gun[iii]+a[ii]<=i then

begin

gun[iii]:=gun[iii]+a[ii];

dfs(ii+1);

gun[iii]:=gun[iii]-a[ii];

end;

end;

begin

sum:=0;big:=0;

readln(n);

for i:=1 to n do

begin

read(a[i]);

if big<a[i] then big:=a[i];

inc(sum,a[i]);

end;

for i:=1 to sum do v[i]:=false;

v[1]:=true;

v[sum]:=true;

for i:=2 to sum-1 do

if sum mod i =0 then v[i]:=true;

i:=big;

while not v[i] do inc(i);

l:=i;

for i:=l to sum do

if v[i] then

begin

fenshu:=sum div i;

for j:=0 to fenshu do gun[j]:=0;

gun[0]:=i;

dfs(1);

end;

end.

#1 LYWS~@2010-08-21 18:29:00
回复 删除
嗯!

我不是大牛!找别人吧!

#2 怪少@2010-08-21 19:25:00
回复 删除
嘻嘻 Me too
查看更多回复
提交回复