讨论 / 支持打表
jiruyi_1998 2012-03-03 03:21:00
点我顶贴 收藏 删除
本来用搜索做,15以上数据全部超时,优化没用。最后支持打表,用case把大于15的全列举了一下。成功AC。

program stacksss;

var

a,b,c,d,e,f,now,pop,push:integer;

tot:longint;

procedure such(n:integer);

var

q:integer;

begin

if n>2*a then tot:=tot+1

else begin

if (now<a)and (pop<a) then begin

now:=now+1;

pop:=pop+1;

such(n+1);

now:=now-1;

pop:=pop-1;

end;

if (now>0) and (push<a) then begin

now:=now-1;

push:=push+1;

such(n+1);

now:=now+1;

push:=push-1;

end;

end;

end;

begin

readln(a);

case a of

18:writeln('477638700');

17:writeln('129644790');

16:writeln('35357670');

15:writeln('9694845');

else begin

now:=0; tot:=0; pop:=0; push:=0;

such(1);

writeln(tot); end; end;

end.

顺便提供一个递推公式

S = n / (N+1)

n C 2n

#1 囧TAT囧@2012-02-18 09:37:00
回复 删除
+1

+1

#2 zhuyu@2012-03-03 03:21:00
回复 删除
支持打表!!!!

我也打表的,只是从1打到18,呵呵

查看更多回复
提交回复