【动态规划专栏】动态规划:卡特兰数---不同的二叉树

简介: 【动态规划专栏】动态规划:卡特兰数---不同的二叉树


题目来源

本题来源为:

Leetcode96. 不同的二叉搜索树

题目描述

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。

算法原理

1.状态表示

经验+题目要求

对于本题而言就是:

dp[i]表示:节点个数为i的时候,一共有多少钟二叉树

2.状态转移方程

根据规律发现重复子问题:

因此状态方程为:

dp[i]+=dp[i-j]*dp[j-1];

3.初始化

4.填表顺序

从左往右

5.返回值

dp[n]

代码实现

动态规划的代码基本就是固定的四步:

1.创建dp表
2.初始化
3.填表
4.返回值

本题完整代码实现:

class Solution 
{
public:
    int numTrees(int n) 
    {
        vector<int> dp(n+1);
        dp[0]=1;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=i;j++)
            {
                dp[i]+=dp[i-j]*dp[j-1];
            }
        }
        return dp[n];
    }
};
相关文章
|
机器学习/深度学习 资源调度 算法
【机器学习基础】对数几率回归(logistic回归)
【机器学习基础】对数几率回归(logistic回归)
1002 0
|
机器学习/深度学习 传感器 数据可视化
基于matlab模拟无线网络拓扑、估计链路质量并可视化拓扑
基于matlab模拟无线网络拓扑、估计链路质量并可视化拓扑
|
1月前
|
人工智能 搜索推荐 算法
警惕AI时代的陷阱:Geo优化中容易踩的坑与人性化Geo的破局之道
随着生成式AI兴起,Geo优化成企业获客新战场。专家于磊指出,黑帽手段、忽视E-E-A-T、关键词堆砌是三大常见陷阱。他倡导“人性化Geo”理念,强调内容真实性、专业性与语义设计,助力企业实现可持续增长。
338 158
|
Kubernetes 安全 Linux
|
JSON 小程序 JavaScript
超详细微信小程序开发学习笔记,看完你也可以动手做微信小程序项目
这篇文章是一份全面的微信小程序开发学习笔记,涵盖了从小程序介绍、环境搭建、项目创建、开发者工具使用、文件结构、配置文件、模板语法、事件绑定、样式规范、组件使用、自定义组件开发到小程序生命周期管理等多个方面的详细教程和指南。
|
存储 人工智能 BI
【头歌·计组·自己动手画CPU】二、运算器设计(理论版) 【计算机硬件系统设计】
【头歌·计组·自己动手画CPU】二、运算器设计(理论版) 【计算机硬件系统设计】
1750 1
|
安全 UED 黑灰产治理
微信留言自动回复(Python实现)
本项目旨在使用Python与Windows GUI自动化工具来自动化微信的操作,作用为读取未读消息、根据关键词回复消息
852 0
|
安全 内存技术
[UDS] --- UDS服务应该支持的NRC
[UDS] --- UDS服务应该支持的NRC
2379 0
小技巧 - 怎样屏蔽群消息(包括 @全体成员)?
小技巧 - 怎样屏蔽群消息(包括 @全体成员)?
11635 2
小技巧 - 怎样屏蔽群消息(包括 @全体成员)?
深入理解AMBA总线(十四)AXI Ordering Model、非对齐访问等
深入理解AMBA总线(十四)AXI Ordering Model、非对齐访问等
2525 1