题目链接:https://cn.vjudge.net/problem/HDU-1023

题意

卡特兰数的应用之一

求一个长度为n的序列通过栈后的结果序列有几种

思路

一开始不知道什么是卡特兰数,猜测是一个递推题

注意到在序列第i个元素入栈时,前几个元素都进过栈,就是通过栈的操作

设n个元素通过栈的结果序列个数为h[n],则有:

\[h_n=h_1h_{n-1}+h_2h_{n-2}+...+h_{n-1}h_1
\]

查了以后发现这是卡特兰数的规律,有通项:

\[h_n=h_{n-1}\frac{4n-2}{n+1}
\]

考虑到又要写高精度算法,想写python,发现没有python,只能先学一下java好了...

代码

// Main.java
import java.math.BigInteger;
import java.util.Scanner; public class Main{
public static void main(String[] args){
Scanner cin=new Scanner(System.in); BigInteger[] num=new BigInteger[100+5];
num[1]=new BigInteger("1");
for (int i=2; i<=100; i++){
Integer tmp1=4*i-2, tmp2=i+1;
BigInteger a=new BigInteger(tmp1.toString());
BigInteger b=new BigInteger(tmp2.toString());
num[i]=num[i-1].multiply(a).divide(b);
}
while (cin.hasNext()){
int n=cin.nextInt();
System.out.println(num[n]);
}
}
}
Time Memory Length Lang Submitted
202ms 9892kB 632 Java 2018-02-09 19:18:25

HDU-1023 Train Problem II 卡特兰数(结合高精度乘除)的更多相关文章

  1. HDU 1023 Train Problem II (卡特兰数,经典)

    题意: 给出一个数字n,假设火车从1~n的顺序分别进站,求有多少种出站序列. 思路: 卡特兰数的经典例子.n<101,用递推式解决.需要使用到大数.n=100时大概有200位以下. #inclu ...

  2. HDOJ 1023 Train Problem II 卡特兰数

    火车进站出站的问题满足卡特兰数...卡特兰数的相关知识如下: 卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列.由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. ...

  3. HDU 1023 Train Problem II (大数卡特兰数)

    Train Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  4. hdu 1023 Train Problem II

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1212 Train Problem II Description As we all know the ...

  5. hdu1032 Train Problem II (卡特兰数)

    题意: 给你一个数n,表示有n辆火车,编号从1到n,入站,问你有多少种出站的可能.    (题于文末) 知识点: ps:百度百科的卡特兰数讲的不错,注意看其参考的博客. 卡特兰数(Catalan):前 ...

  6. HDU 1023 Train Problem II( 大数卡特兰 )

    链接:传送门 题意:裸卡特兰数,但是必须用大数做 balabala:上交高精度模板题,增加一下熟悉度 /************************************************ ...

  7. C - Train Problem II——卡特兰数

    题目链接_HDU-1023 题目 As we all know the Train Problem I, the boss of the Ignatius Train Station want to ...

  8. HDU 1023 Train Problem II 大数打表Catalan数

    一个出栈有多少种顺序的问题.一般都知道是Catalan数了. 问题是这个Catalan数非常大,故此须要使用高精度计算. 并且打表会速度快非常多.打表公式要熟记: Catalan数公式 Cn=C(2n ...

  9. 1023 Train Problem II(卡特兰数)

    Problem Description As we all know the Train Problem I, the boss of the Ignatius Train Station want ...

随机推荐

  1. hexo创建的tags和categories页面为空的解决办法

    title: hexo创建的tags和categories页面为空的解决办法 toc: false date: 2018-04-16 02:26:10 主题:landscape 添加type以及men ...

  2. 重温前端基础之-js排序算法

    javascript数组常用的方法: push():返回值,数组新的长度 pop():返回值,被删除的数组末尾元素 shift():返回值,被删除的数组首部元素 unshift():返回值,数组新的长 ...

  3. QT笔记 -- (2) 文件相关操作、中文路径乱码

    1.显示文件对话框,选择一个目录,显示选中目录中的所有图片的代码如下 主要class: QFileDialog QStringList QFileInfoList QDir void open(){ ...

  4. SQL中的union

    在SQL中,如果我们查询一个班级的考试成绩数据,再统计考试成绩的总和,我们使用以下两条语句: select StudentName,Grade from Student select '总成绩',SU ...

  5. ActiveMQ学习笔记(1)----初识ActiveMQ

    1. 什么是ActiveMQ? ActiveMQ是Apache推出的,一款开源的,完全支持JMS1.1和j2ee1.4规范的JMS Provider实现的消息中间件(Message Oriented ...

  6. 垃圾回收器(GC)

    值类型占用的空间在方法执行结束后会被马上释放, 引用类型占用的空间在方法结束后不会被马上释放,具体什么时间释放由垃圾回收器(GC)来决定. GC(Garbage Collection):JAVA/.N ...

  7. JavaScript函数写法整理

    1.普通函数定义的两种写法 function hello(){ console.log("hello!"); } var hello = function(){ console.l ...

  8. numpy基础篇-简单入门教程4

    np.set_printoptions(precision=3),只显示小数点后三位 np.random.seed(100) rand_arr = np.random.random([2, 2]) n ...

  9. 如何查询mysql中是否表被锁

    可直接在mysql命令行执行:show engine innodb status\G;(只能通过cmd或者shell登录mysql) 查看造成死锁的sql语句,分析索引情况,然后优化sql然后show ...

  10. Qt之字体文件(TTF)

    简述 TTF(TrueTypeFont)是Apple公司和Microsoft公司共同推出的字体文件格式,随着windows的流行,已经变成最常用的一种字体文件表示方式. 在一些特殊的场合,系统字符集不 ...