-
括号匹配问题( '('的数量在任何位置总是大于')' ),已知括号的数量为n对,求有多少种排列可能
-
给出一个n,要求一个长度为2n的01序列,使得序列的任意前缀中1的个数不少于0的个数
-
计算不同形态二叉树的个数
相关链接(转载)
简单的代码实现
算一算不同形态二叉树的个数
对于任意正整数n,计算n个结点不同构的二叉树个数。 例如,下面是所有三个结点的不同构二叉树(图片来自网络):
输入
一个正整数n
输出
n个结点不同构的二叉树个数,输出占一行
代码
#include <stdio.h>
//递推
int Catalan(int n){
if(n == 0)return 1;
if(n == 1)return 1;
int sum = 0;
if(n >1){
for(int i = 0; i < n; i++){
sum += Catalan(i)*Catalan(n-1-i);
}
}
return sum;
}
int main(){
int n = 0;
scanf("%d",&n);
printf("%d",Catalan(n));
}