二叉树计数(codevs 3112)

题目描述 Description

一个有n个结点的二叉树总共有多少种形态

输入描述 Input Description

读入一个正整数n

输出描述 Output Description

输出一个正整数表示答案

样例输入 Sample Input

6

样例输出 Sample Output

132

数据范围及提示 Data Size & Hint

1<=n<=20

/*
  复习一下卡特兰数,以备考试考上模板(虽然可能性不大)
  递推式:h[1]=1,h[i]=(4*i-2)*h[i-1]/(n+1)
  数列模式:1 1 2 5 14 42 132 429 ……
*/
#include<cstdio>
#include<iostream>
#define lon long long
using namespace std;
lon h[25];int n;
int main(){
    scanf("%d",&n);
    h[1]=1;
    for(int i=2;i<=n;i++){
        h[i]=(lon)(4*i-2)*h[i-1]/(lon)(i+1);
    }
    cout<<h[n];
    return 0;
}
时间: 2024-11-03 22:21:16

二叉树计数(codevs 3112)的相关文章

Codevs 3112 二叉树计数

3112 二叉树计数 题目描述 Description 一个有n个结点的二叉树总共有多少种形态 输入描述 Input Description 读入一个正整数n 输出描述 Output Description 输出一个正整数表示答案 样例输入 Sample Input 6 样例输出 Sample Output 132 数据范围及提示 Data Size & Hint 1<=n<=20 /* 假设该二叉树的左子树有i个节点,则右子树有n-i-1个节点 用fs(n)表示n个节点的二叉树不同的

[Catalan数]1086 栈、3112 二叉树计数、3134 Circle

1086 栈 2003年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈). 栈的重要性不言自明,任何一门数据结构的课程都会介绍栈.宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙 宁宁考虑的

1180. 二叉树计数

180. 二叉树计数 (Standard IO) 时间限制: 1000 ms  空间限制: 262144 KB  具体限制 题目描述 n个相同结点构成的二叉树有多少种?如3个结点的二叉树有以下5种: 输入 第一行输入n(1<=n<=30),表示结点数. 输出 输出一个整数表示二叉树的种数. 样例输入 3 样例输出 5 数据范围限制 1<=n<=30 1 #include<iostream> 2 using namespace std; 3 long long int f

【codevs】3112 二叉树计数

时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 一个有n个结点的二叉树总共有多少种形态 输入描述 Input Description 读入一个正整数n 输出描述 Output Description 输出一个正整数表示答案 样例输入 Sample Input 6 样例输出 Sample Output 132 数据范围及提示 Data Size & Hint 1<=n<=20 分析 catalan数 f[2]=f[3]=

二叉树结构 codevs 1029 遍历问题

codevs 1029 遍历问题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 我们都很熟悉二叉树的前序.中序.后序遍历,在数据结构中常提出这样的问题:已知一棵二叉树的前序和中序遍历,求它的后序遍历,相应的,已知一棵二叉树的后序遍历和中序遍历序列你也能求出它的前序遍历.然而给定一棵二叉树的前序和后序,你却不能确定其中序遍历序列,考虑如下图中的几棵二叉树: 所有这些二叉树都有着相同的前序遍历和后序遍历,但中序遍历却不相同.

加分二叉树(codevs 1090)

题目描述 Description 设一个n个节点的二叉树tree的中序遍历为(l,2,3,-,n),其中数字1,2,3,-,n为节点编号.每个节点都有一个分数(均为正整数),记第j个节点的分数为di,tree及它的每个子树都有一个加分,任一棵子树subtree(也包含tree本身)的加分计算方法如下: subtree的左子树的加分× subtree的右子树的加分+subtree的根的分数 若某个子树为主,规定其加分为1,叶子的加分就是叶节点本身的分数.不考虑它的空 子树. 试求一棵符合中序遍历为

9.28 二叉树计数

题意 给定一颗\(N\)个节点的二叉树并对其标号,标号方法如下:编号为\(i\)的结点在二叉树的前序遍历中恰好是第\(i\)个出现 定义\(A_i\)表示编号为\(i\)的点在二叉树的中序遍历中出现的位置 现在,给出\(M\)个限制条件,第\(i\)个限制\(<u_i,v_i>\)表示\(A_{u_i}<A_{v_i}\),即中序遍历中\(u_i\)在\(v_i\)之前出现 请计算有多少种不同的带标号二叉树满足上述所有限制条件,取模\(10^9+7\) \(N\leq 500\) 解法

图的计数

无标号计数与带标号计数 无标号就是在观测上不考虑个体的差异, 带标号就是在观测上考虑个体的差异. 对于无标号计数, 我们可以按照某种关键值, 给所有的元素进行定序, 所有无标号计数等价于定序计数. 对于带标号计数, 我们可以任意设置关键值, 所以带标号计数等价于不定序计数. 最常见的例子就是组合与排列, 它们还满足一组特殊的关系: 组合数 * n! = 排列数. 有向图 / 无向图 带标号无向图的 度数的K次方 的和 分析 $ans = n \sum_{d = 0} ^ {n - 1} \bin

对卡塔兰数的理解

卡塔兰数定义 f(n) = f(0)f(n-1) + f(1)f(n-2) + ... + f(n-1)f(0)       = f(k-1)f(n-k) k=1...n 以k为轴划分子问题,左边子问题的解的个数和右边子问题的解的个数是原问题以k为轴的解法的2个独立步骤,适用乘法原理 分别以1,2,...n为轴,是原问题的n种解法,适用加法原理. 与卡塔兰数有关问题通常满足如下描述:有一个大问题A,规模为n,要解决这个问题,可以用分治的思想,首先固定其中某一个元素,将剩下的n-1个元素拆分成两个