题目描述 Description
思路
卡特兰数最基本的操作,不知道的同学自行脑补度娘,这里在奉送上几个求解的方式。
令 h(0)=1,h(1)=1,h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2) h(n)=h(n-1)*(4*n-2)/(n+1);(n<=34) h(n)=C(2n,n)/(n+1) (n=1,2,3,...) h(n)=c(2n,n)-c(2n,n+1)(n=1,2,3,...)
题目代码
var h:array[-100..100] of int64; j,n,k:int64;i:longint; begin fillchar(h,sizeof(h),0); h[0]:=1; h[1]:=1; readln(n); if (n=1) or (n=0) then begin writeln(h[n]); halt; end; for i:=2 to n do begin j:=i-1; k:=0; while k<>i do begin h[i]:=h[i]+h[k]*h[j]; dec(j); inc(k); end; end; writeln(h[n]); end.