Catalan数的代码实现
作者:
deligent
,
2023-08-27 21:37:36
,
所有人可见
,
阅读 103
#include <iostream>
using namespace std;
const int N = 30 + 3;
long long h[N];
void catalan1(){
h[0] = 1;
for( int i = 1; i <= N; i++ ){
h[i] = h[i-1] * (4 * i - 2) / ( i + 1 );
}
}
void catalan2(){
h[0] = 1;
for(int i = 1; i <= N; i++){
for(int j = 0; j <= i; j++){
h[i] += h[j] * h[i-j-1];
}
}
}
long long C(long long m, long long n){
if(n == 0 || n == m) return 1;
return C(m-1, n) + C(m - 1, n - 1);
}
void catalan3(){
h[0] = 1;
for( int i = 1; i <= N; i++){
h[i] = C(2* i, i) / (i + 1);
}
}
void catalan4(){
h[0] = 1;
for( int i = 1; i <= N; i++){
h[i] = C(2* i, i) - C(2 * i, i -1);
}
}
int main(){
catalan4();
for(int i = 0; i <= N; i++){
cout<<i<<" "<<h[i]<<endl;
}
return 0;
}