揭秘:n对圆括号组成不同合法括号序列数量的卡特兰数解法
问题分析 这是一个经典的卡特兰数(Catalan number)应用问题。对于 `n` 对圆括号组成的不同合法括号序列的数量,其值等于第 `n` 个卡特兰数。 卡特兰数的递推公式为: $C_0 = 1$ $C_{n+1}=\sum_{i = 0}^{n}C_iC_{n - i}$,$n\geq0$ 也可以通过组合数公式直接计算: $C_n=\frac{C_{2n}^n}{n + 1}=\frac{(2n)!}{(n+1)!n!}$ 代码实现(Python) ```python def catalan_number(n): # 初始化一个长度为 n+1 的数组,用于存储卡特兰数 catalan = [0] * (n + 1) # 第 0 个卡特兰数为 1 catalan[0] = 1 # 计算第 1 到第 n 个卡特兰数 for i in range(1, n + 1): for j in range(i): # 根据递推公式计算卡特兰数 catalan[i] += catalan[j] * catalan[i - j - 1] return catalan[n] # 读取输入 n = int(input()) # 计算并输出结果 print(catalan_number(n)) ``` 复杂度分析 - 时间复杂度:$O(n^2)$,主要是双重循环的时间开销。 - 空间复杂度:$O(n)$,主要用于存储卡特兰数的数组。 测试 对于输入 `4`,程序将输出 `14`,与样例输出一致。 ######[AI问答 | 401点数解答 | 2025-12-13 10:27:43]
- 易语言读取文本文件并显示到超级列表框:代码示例与注意要点(DeepSeek | 571点数解答 | 2025-08-23 20:54:40)232
- 易语言:读取并显示特定文本到超级列表框,还能增加新数据的方法与要点(DeepSeek | 1317点数解答 | 2025-08-23 20:58:40)236
- C++实现:判断由 6 种括号组成的字符串是否为合法括号序列(字节豆包 | 339点数解答 | 2025-12-03 18:22:21)83
- C++ 实现:判断括号序列合法性的详细代码及解释(字节豆包 | 532点数解答 | 2025-12-04 18:04:18)71
- 判断整数是否为二进制数:Python、Java、C++ 代码实现(字节豆包 | 473点数解答 | 2025-11-15 20:34:57)80
- 求解特定条件下整数序列的最小值:算法分析与代码实现(字节豆包 | 746点数解答 | 2026-01-24 13:14:40)62
- mallshop商城网站:数据库设计与强大业务功能全揭秘(GPT | 257点数解答 | 2024-12-09 14:08:15)278
- 计算机表格数据结构全解析:从基础概念到 CSV 文件编程排序实现 (字节豆包 | 257点数解答 | 2025-12-08 17:31:17)48
- 深入解析格雷码生成算法:递归求解与代码实现(DeepSeek | 443点数解答 | 2026-01-05 12:21:49)56
- 深入探究:n 位格雷码中编号 k 二进制串的求解算法与实现(DeepSeek | 726点数解答 | 2026-01-13 12:31:37)56
- iOS开发揭秘:序列(Sequence)索引是否从0开始?实例为你解答!(百度文心 | 187点数解答 | 2023-11-09 17:44:38)250
- MATLAB实现r5(n)序列离散傅立叶变换及补零至20长序列DFT计算 (GPT | 339点数解答 | 2024-10-28 16:31:47)279