博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU1131_卡特兰数算二叉树个数
阅读量:4627 次
发布时间:2019-06-09

本文共 1535 字,大约阅读时间需要 5 分钟。

题目大意: 给你n个节点,然后求出能够组成的二叉树的个数,注意每个节点都有标号。 解题思路: 卡特兰数,然后每个节点都有标号,所以最后要再对节点全排列,即n! 先预处理105以内的卡特兰数,之后再乘上n! 卡特兰数的递推公式:h(n)=h(n-1)*(4*n-2)/(n+1);   h(0) = 1; 代码:
//h(n)=h(n-1)*(4*n-2)/(n+1);   h(0) = 1;#includeusing namespace std;const int MAX_LEN = 10005;const int MAX_NUM = 105;int catalan[MAX_NUM][MAX_LEN];void multip(int *ans, int b, int &len){    int carry = 0;    for(int i = 0; i < len; i++)    {        int temp = ans[i] * b + carry;        ans[i] = temp % 10;        carry = temp / 10;    }    while(carry)    {        len++;        ans[len-1] = carry % 10;        carry /= 10;    }    return ;}void division(int *cata, int b, int &len){    int r = 0;    for(int i = len - 1; i >= 0; i--)    {        int temp = cata[i] + r * 10;        cata[i] = temp / b;        r = temp % b;    }    while(!cata[len-1])        len--;    return ;}int main(void){    int len[MAX_NUM];    memset(catalan, 0, sizeof(catalan));    memset(len, 0, sizeof(len));    catalan[0][0] = 1;    len[0] = 1;    for(int i = 1; i < MAX_NUM; i++)    {        memcpy(catalan[i], catalan[i-1], sizeof(catalan[i-1]));        len[i] = len[i-1];        multip(catalan[i], 4 * i - 2, len[i]);        division(catalan[i], i + 1, len[i]);    }    int n;    while(scanf("%d", &n), n)    {        for(int i = 1; i <= n; i++)            multip(catalan[n], i, len[n]);        for(int j = len[n] - 1; j >= 0; j--)        {            printf("%d", catalan[n][j]);        }        printf("\n");    }    return 0;}

转载于:https://www.cnblogs.com/cchun/archive/2012/02/15/2520232.html

你可能感兴趣的文章
解决无法wifi上网的问题
查看>>
uvalive 5731 Qin Shi Huang’s National Road System
查看>>
SULLEY安装与使用
查看>>
洛谷 1144 最短路计数 bfs
查看>>
C++ 单例模式
查看>>
C++ 我想这样用(四)
查看>>
T-2-java面向对象
查看>>
URL重定向及跳转漏洞
查看>>
springboot使用fastjson中文乱码解决方法 【转载】
查看>>
第一次项目上Linux服务器(四:CentOS6下Mysql数据库的安装与配置(转))
查看>>
Java基础——网络编程(二)
查看>>
读书笔记-1 《人月神话》
查看>>
Scrum冲刺阶段6
查看>>
OpenStack neutron删除网络设备出错解决办法
查看>>
[源码和文档分享]基于JSP同城校友网的设计与实现
查看>>
导弹拦截
查看>>
【模板】树状数组 1
查看>>
idea配置の隐藏参数
查看>>
BZOJ 1013: [JSOI2008]球形空间产生器sphere [高斯消元]
查看>>
用git上传项目到github
查看>>