讨论 / WHAT IS WRONG?
timetobehardworking 2009-05-09 22:12:00
点我顶贴 收藏 删除
program p53;

var

f:array [0..100] of longint;

i,j,k,n:longint;

begin

read(n);

fillchar(f,sizeof(f),0);

f[1]:=1;

for k:=2 to n do

for i:=1 to k-1 do

f[k]:=f[k]+f[i]*f[k-i];

write(f[n]);

readln;

readln;

end.

不是这个公式吗?百科里的

令h(1)=1,catalan数满足递归式:

  h(n)= h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1) (其中n>=2)

#1 xxwzy@2009-05-08 17:54:00
回复 删除
f[0]:=1;

for i:=1 to n do

#2 xxwzy@2009-05-08 17:56:00
回复 删除
错了

按你的

f[0]:=1;

for k:=1 to n do

for i:=0 to k-1 do

#3 timetobehardworking@2009-05-09 20:26:00
回复 删除
program p53;

var

f:array [0..100] of longint;

i,j,k,n:longint;

begin

read(n);

fillchar(f,sizeof(f),0);

f[0]:=1;

for k:=1 to n do

for i:=1 to k-1 do

f[k]:=f[k]+f[i]*f[k-i];

write(f[n]);

readln;

readln;

end.

改了还是不对呀。

全部都是0了。

再帮忙看下。

#4 timetobehardworking@2009-05-09 20:39:00
回复 删除
为什么改成这样就对了?

谁能帮忙解释下。

program p53;

var

f:array [0..100] of longint;

i,j,k,n:longint;

begin

f[0]:=1;

read(n);

for i:=1 to n do

for j:=0 to i-1 do

f[i]:=f[i]+f[j]*f[i-j-1];

write(f[n]);

readln;

readln;

end.

#5 timetobehardworking@2009-05-09 20:39:00
回复 删除
为什么改成这样就对了?

谁能帮忙解释下。

program p53;

var

f:array [0..100] of longint;

i,j,k,n:longint;

begin

f[0]:=1;

read(n);

for i:=1 to n do

for j:=0 to i-1 do

f[i]:=f[i]+f[j]*f[i-j-1];

write(f[n]);

readln;

readln;

end.

#6 timetobehardworking@2009-05-09 20:39:00
回复 删除
不是这个公式吗?百科里的

令h(1)=1,catalan数满足递归式:

  h(n)= h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1) (其中n>=2)

#7 xxwzy@2009-05-09 20:56:00
回复 删除
这题是要求

卡特兰(n+1)

#8 xxwzy@2009-05-09 20:57:00
回复 删除
读入后 Inc(n)

再算也能过

#9 timetobehardworking@2009-05-09 22:12:00
回复 删除
呵呵。

竟然没发现。

谢谢啦。

查看更多回复
提交回复