zoukankan      html  css  js  c++  java
  • 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
    ",fun(n));
    20     return 0;
    21 }
  • 相关阅读:
    Oracle列转行函数使用
    JavaScript笔记整理
    23种设计模式之桥梁模式
    23种设计模式之状态模式
    23种设计模式之解释器模式
    23种设计模式之备忘录模式
    23种设计模式之访问者模式
    23种设计模式之观察者模式
    23种设计模式之组合模式
    23种设计模式之适配器模式
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/7190060.html
Copyright © 2011-2022 走看看