当前位置: 首页 > news >正文

【动态规划算法题记录】343. 整数拆分 | 96.不同的二叉搜索树

整数拆分

题目🔗

题目描述

给定一个正整数 n ,将其拆分为 k个正整数的和(k >= 2),并使这些整数的乘积最大化。

返回你可以获得的最大乘积

思路分析

  1. dp数组含义dp[i]表示整数i拆分后的最大乘积。
  2. 递推公式dp[i] = j * dp[i - j]
  3. dp数组初始化dp[0] = 0, dp[1] = 0, dp[2] = 1

cpp代码

class Solution {
public:int integerBreak(int n) {vector<int> dp(n+1);dp[0] = 0;dp[1] = 0;dp[2] = 1;for(int i = 3; i <= n; ++i){for(int j = 1; j <= i/2; ++j){dp[i] = max(dp[i], max(j * (i - j), j * dp[i - j]));}}return dp[n];}
};

不同的二叉搜索树

题目🔗

题目描述

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

思路分析

在这里插入图片描述

  1. dp数组含义dp[i]表示由i个节点组成的不同二叉搜索树的数量。
  2. 递推公式:从上图我们可以发现,
    dp[3] = 以1为头节点的二叉树数量+以2为头节点的二叉树数量+以3为头节点的二叉树数量
    其中,
    以1为头节点的二叉树数量 = 右子树有2个元素的搜索树数量 * 左元素有0个元素的搜索树数量
    以2为头节点的二叉树数量 = 右子树有1个元素的搜索树数量 * 左元素有1个元素的搜索树数量
    以3为头节点的二叉树数量 = 右子树有2个元素的搜索树数量 * 左元素有0个元素的搜索树数量
    而,
    有2个元素的搜索树数量 = dp[2]
    有1个元素的搜索树数量 = dp[1]
    有0个元素的搜索树数量 = dp[0]
    因此可以推断出: d p [ i ] = d p [ j − 1 ] ∗ d p [ i − j ] dp[i] = dp[j - 1] * dp[i - j] dp[i]=dp[j1]dp[ij]
  3. dp数组初始化dp[0] = 1

cpp代码

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[j - 1] * dp[i - j];}}return dp[n];}
};

总结

这两题都是属于思路比较绕,但想清楚之后会发现很简单的,所以前期一定要理解dp数组的相关含义。

http://www.lryc.cn/news/420303.html

相关文章:

  • 网页上预览Excel文件
  • Unity射击游戏开发教程:(31)制造一定追踪行为的敌人
  • springboot mybatis plus 固定查询条件及可选查询条件的组合查询,使用QueryWrapper.and()来解决。
  • 使用ollama取代openai的api进行graphRAG失败记录
  • MyBatis 配置与测试方式
  • C#实现代理服务器
  • react的路由实战使用
  • python 字典转成类 构建类
  • springboot 过滤器
  • 【C语言篇】深入理解指针1
  • IAP程序升级 与 电脑BIOS 的关系
  • Java使用MQTT协议
  • 等级+时间的优先级算法
  • 物流仓库安全视频智能管理方案:构建全方位、高效能的防护体系
  • jackson反序列化漏洞
  • Java | Leetcode Java题解之第328题奇偶链表
  • 100 Exercises To Learn Rust 挑战!准备篇
  • 瑞_RabbitMQ_初识MQ
  • 系统内存管理:虚拟内存、内存分段与分页、页表缓存TLB以及Linux内存管理
  • Java每日一练_模拟面试题5(堆和栈的区别)
  • 传感器校正和测试
  • Eclipse 悬浮提示:提高编程效率的利器
  • Vault系列之:创建令牌
  • 如何在 Windows 10 环境下安装和配置 MySQL:初学者指南
  • Ubuntu 24.04上报:Error: could not connect to ollama app, is it running?的解决方法
  • 字典树查重(到底要开多大的空间啊)
  • 财务会计与管理会计(二)
  • 技术周总结 08.05-08.11周日
  • B树和B+树的插入、删除
  • Axios网络请求总结