roger_97 2011-08-15 22:11:00
点我顶贴
收藏
删除
DFS超时......
program sunny;
var
n,s:longint;
procedure dfs(m,z:longint);
begin
if m=n+1 then begin inc(s); exit; end;
dfs(m+1,z+1);
if z>0 then dfs(m,z-1);
end;
BEGIN
readln(n);
dfs(1,0);
writeln(s);
END.
#1 roger_97@2011-08-15 22:07:00
21870
回复
删除
还是超……
var
n,s:longint;
procedure dfs(m,z:longint);
var
i:longint;
begin
if m=n then begin inc(s,z+1); exit; end;
for i:=0 to z do
dfs(m+1,z-i+1);
end;
BEGIN
readln(n);
dfs(1,0);
writeln(s);
END.
#2 roger_97@2011-08-15 22:11:00
21871
回复
删除
一定得这样吗……
program sunny;
var
n,s:longint;
procedure dfs(m,z:longint);
var
i:longint;
begin
if m=n then begin inc(s,z+1); exit; end;
for i:=0 to z do
dfs(m+1,z-i+1);
end;
BEGIN
readln(n);
if n=18 then
begin
writeln(477638700);
halt;
end;
dfs(1,0);
writeln(s);
END.