Loading

摘要: 卡特兰数的介绍见:卡特兰数及其应用 各公式求解算法 公式1和公式2可以使用循环递推来求,公式3和公式4,可以先写一个函数求出组合数C(n,m),再用组合数进行计算。 可以使用以下递推式来求组合数C(n,m),C(n,m)可以用二维数组C[n][m]表示,通过以下公式,可以递推得出每一项的C[i][j 阅读全文
posted @ 2020-11-03 19:14 拾月凄辰 阅读(1557) 评论(0) 推荐(0) 编辑
摘要: 出栈次序 一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出栈序列? 常规分析 首先,我们设 f(n)=序列个数为n的出栈序列种数。(我们假定,最后出栈的元素为k,显然,k取不同值时的情况是相互独立的,也就是求出每种k最后出栈的情况数后可用加法原则,由于k最后出栈,因此,在k入栈之前, 阅读全文
posted @ 2020-11-03 16:44 拾月凄辰 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 思路 方法一:回溯 + 剪枝 生成所有2n个‘(’ 和“)”构成的序列,逐一判断生成的序列是否是有效的括号组合。 这里可以剪枝:在左括号/右括号的数量到达n的时候,将剩余的(2n - 左括号数-右括号数)数量 的右括号/左括号补到字符串末尾,然后对此字符串进行判断。 判断方法有两种: (1)使用栈进 阅读全文
posted @ 2020-11-03 15:48 拾月凄辰 阅读(109) 评论(0) 推荐(0) 编辑