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.