codevs 3083 二叉树

题目描述 Description

同学们都知道二叉树的定义,也都知道3个结点的二叉树有5种,

现给你二叉树的结点个数n,要你编程输出不同形态二叉树的种数。

输入描述 Input Description
一个整数n
输出描述 Output Description

不同形态二叉树的种数。

样例输入 Sample Input

3

样例输出 Sample Output

5

数据范围及提示 Data Size & Hint

n<30

讨论过程:http://www.cnblogs.com/huashanqingzhu/p/5823166.html

http://www.cnblogs.com/hujunzheng/p/5040334.html

复制代码
 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     long long n,i;
 6     long long h0=1,h1=1,h2;
 7     cin>>n;
 8     if(n==0||n==1) cout<<1<<endl;
 9     else
10     {
11         for(i=2;i<=n;i++)
12         {
13             h2=(4*i-2)*h1/(i+1);
14             h1=h2;
15             //cout<<h2<<endl;
16         }
17         cout<<h2<<endl;
18     }
19     return 0;
20 }
复制代码

另一个做法,思路不谋而合:

何泓历的代码:

复制代码
 1 #include <stdio.h>
 2 long long a[21]={0};
 3 long long fun(int n)
 4 {
 5     if(n==1||n==0) return 1;
 6     long long sum=0,i;
 7     for(i=0;i<n;i++)
 8     {
 9         if(a[i]==0) a[i]=fun(i);
10         if(a[n-1-i]==0) a[n-1-i]=fun(n-1-i);
11         sum+=a[i]*a[n-1-i];
12     }
13     return sum;
14 }
15 int main()
16 {
17     int n;
18     scanf("%d",&n);
19     printf("%lld\n",fun(n));
20     return 0;
21 }
复制代码

 

 

 

posted on   华山青竹  阅读(320)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
历史上的今天:
2016-07-16 qsort函数、sort函数【转】

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示