讨论 / 递推
B-L-A-C-K 2009-02-10 06:43:00
点我顶贴 收藏 删除
分类的思想:

1、节点数为0认为二叉树数目为1

2、当节点数为1时,f[1]=1

3、当节点数为2时,f[2]=f[0] * f[1] + f[1] * f[0],即:f[左0右1] + f[左1右]

4、当节点数为3时,f[3]=f[0] * f[2] + f[1] * f[1] + f[2] * f[0],即:f[左0右2] + f[左1右1] + f[左2右0]

5、当节点数为n时,f[n]=f[0] * f[n-1] + f[1] * f[n-2] +...+ f[n-1] * f[0]

6、一个双重循环递推求解

program p332;

var f:array[0..20]of longint;

i,j,n:longint;

begin

f[0]:=1;

f[1]:=1;

read(n);

for i:=2 to n do

for j:=0 to i-1 do

inc(f[i],f[j]*f[i-1-j]);

writeln(f[n])

end.

查看更多回复
提交回复