卡特兰数(Catalan)应用:输出所有N对合法括号序列和输出所有已知进栈序列的合法出栈序列

本文探讨卡特兰数在解决两类问题中的应用:一是生成所有N对合法的括号序列,二是根据给定的进栈序列输出所有可能的合法出栈序列。通过递归和组合数学,揭示了这两类问题背后的数学规律。
摘要由CSDN通过智能技术生成
Catalan应用
  1. 输出所有N对合法括号序列
  2. 输出所有已知进栈序列的合法出栈序列
/*
 * shsheng
 */
public class Catalan {
    // Catalan数可以用来描述以下问题,有2*n个人排队买票,票5元一张,
    // 2*n个人中n个人拿着5元钱买票,另外n个人拿着10元钱,
    // 售票员没有带钱,问2*n个人有几种排队方法,使得售票员可以在收到10元时有5元找零?
    // 满足该问题的排队需要满足除了第一个人外任意位置人前面拿5元买票的人大于拿10元的。
    // 扩展问题:
    // 1. n对括号的全部合法序列。
    // 2. 已知进栈序列,求所有合法的出栈序列。
    // 3. 构造节点数为n的所有二叉树。http://blog.csdn.net/ssuchange/article/details/17380455

    public static void main(String[] args) {
        try {
            testBrackets(7);
            testStackSequence(7);
        } catch (Exception e) {
            e.prin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值