【代码随想录】算法训练计划41

news2024/11/28 22:37:27

dp

1、343. 整数拆分

题目:
给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。
返回 你可以获得的最大乘积 。

输入: n = 10
输出: 36
解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。

思路:
  • 老办法,画图理解
  • 10是如何分为334,343,433,呢?这都是最大的值27,例如,i=3的时候,在递推公式有一个jdp[i-j],就是这一步,实现了334 or 343,因为dp[i-j] = dp[7] = 34 or 4*3
  • 普及一个概念,在相同的总和下,例如长宽高,最近圆形的最完美,所得之积最大,体积也是如此,例如球形,这是我在初二左右时候写数学题悟出来的
    在这里插入图片描述
func integerBreak(n int) int {
    // 理解了写
    dp := make([]int, n+1)
    dp[1]=1
    dp[2]=1
    for i:=3;i<n+1; i++ {
        for j:=1; j<i; j++ {
            dp[i] = max(dp[i], max(j*(i-j),j*dp[i-j]))
        }
    }
    return dp[n]
}
func max(a, b int) int {if a>b {return a}; return b}

2、96. 不同的二叉搜索树

题目:
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。
输入:n = 3
输出:5在这里插入图片描述

思路:
  • i代表dp[i]有多少个不同的二叉搜索树,j代表头节点为j
  • 同时是考虑了二叉搜索树特性的情况
func numTrees(n int) int {
    // 代码一刷,卡哥视频讲的很好,容易理解的
    dp := make([]int, n+1)
    dp[0] = 1
    for i:=1; i<n+1; i++ {
        for j:=1; j<=i; j++ {
            dp[i] += dp[i-j]*dp[j-1]
        }
    }
    return dp[n]
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1300134.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电工--基本放大电路

电压放大倍数、输入电阻和输出电阻是放大电路的三个主要性能指标 共发射极基本交流放大电路 晶体管&#xff1a;电流放大作用。能量较小的输入信号通过晶体管的控制作用&#xff0c;去控制电源所共给的能量&#xff0c;以在输出端获得一个能量较大的信号 集电极电源电压&#…

接口测试 —— Jmeter读取数据库数据作测试参数

1、添加Jdbc Request 2、添加ForEach控制器(右键线程组->逻辑控制器->ForEach控制器) ①输入变量的前缀&#xff1a;mobilephone&#xff1b; 从jdbc request设置的变量得知&#xff0c;我们要取的值为mobilephone_1、mobilephone_2、mobilephone_3......所以这里输入m…

基于单片机智能病床呼叫系统设计

**单片机设计介绍&#xff0c;基于单片机智能病床呼叫系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的智能病床呼叫系统是一种利用单片机技术设计的医疗设备&#xff0c;它能够帮助病人在住院期间快速、方便…

侯捷C++ (二--STL标准库)

CSTL标准库与泛型编程 STL六大部件 容器 Containers分配器 Allocators 一种用来修饰容器或仿函数或迭代器接口的东西算法 Algorithms迭代器 Iterators适配器 Adapters仿函数 Functors 容器 前闭后开 大致分为两种容器&#xff1a;序列容器&#xff0c;关联容器 所谓关联容器…

安装 DevEco Studio 后不能用本地 Node.js 打开

安装 DevEco Studio 后第一次打开时&#xff0c;不能用本地 Node.js 打开 答&#xff1a;因为本地 Node.js 文件夹名字中有空格 Node.js路径只能包含字母、数字、“。”、“_”、“-”、“:”和“V” 解决方法&#xff1a; 1.修改文件夹名称 2.重新下载 注意&#xff1a;找一…

Verilog基础:$random系统函数的使用

相关阅读 Verilog基础​编辑https://blog.csdn.net/weixin_45791458/category_12263729.html $random系统函数语法的BNF范式如下所示&#xff0c;有关BNF范式相关内容&#xff0c;可以浏览以往文章Verilog基础&#xff1a;巴科斯范式(BNF)。 $random系统函数在每次调用时返回一…

【Docker】进阶之路:(一)容器技术发展史

【Docker】进阶之路&#xff1a;&#xff08;一&#xff09;容器技术发展史 什么是容器为什么需要容器容器技术的发展历程Docker容器是如何工作的 什么是容器 容器作为一种先进的虚拟化技术&#xff0c;已然成为了云原生时代软件开发和运维的标准基础设施。在了解容器技术之前…

14-1、IO流

14-1、IO流 lO流打开和关闭lO流打开模式lO流对象的状态 非格式化IO二进制IO读取二进制数据获取读长度写入二进制数据 读写指针 和 随机访问设置读/写指针位置获取读/写指针位置 字符串流 lO流打开和关闭 通过构造函数打开I/O流 其中filename表示文件路径&#xff0c;mode表示打…

C++学习笔记:继承

继承 什么是继承?继承的写法基类和派生类的赋值转换继承中的作用域派生类的默认成员函数单继承,多继承,虚拟继承is-a 和 has-a 什么是继承? 继承是C语言面向对象的三大特性之一&#xff0c;是面向对象程序设计使代码可以复用的最重要的手段,基本都是在一个类的基础上为了增加…

十九、FreeRTOS之FreeRTOS软件定时器

本节主要需要掌握以下内容&#xff1a; 1&#xff0c;软件定时器的简介&#xff08;了解&#xff09; 2&#xff0c;软件定时器的状态&#xff08;熟悉&#xff09; 3&#xff0c;单次定时器和周期定时器&#xff08;熟悉&#xff09; 4&#xff0c;软件定时器结构体成员介…

Unity中Batching优化的GPU实例化(2)

文章目录 前言一、GPU实例化的Shader准备步骤1、在Pass中声明实例化需要的变体2、UNITY_VERTEX_INPUT_INSTANCE_ID 在顶点着色器的输入(appdata)和输出(v2f可选)中添加(uint instanceID : SV_InstanceID). 前言 在上篇文章中&#xff0c;我们做了一些GPU实例化的前置准备&…

查看NVIDIA CUDA版本号的四种方法

查看CUDA版本号这里有三种方法。 nvidia-smi 运行nvidia-smi命令&#xff1a; 右上角可以看到CUDA版本号。 CUDA Toolkit 下载地址&#xff1a;https://developer.nvidia.com/cuda-downloads $nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2023 NV…

【数据结构 — 排序 — 交换排序】

数据结构 — 排序 — 交换排序 一.交换排序1.基本思想2.冒泡排序2.1.算法讲解2.2.代码实现2.2.1.函数定义2.2.2.算法接口实现2.2.3.测试代码实现2.2.4.测试展示 3.快速排序3.1.算法讲解3.2.各大算法分别单独实现3.2.1快速排序hoare版本3.2.2.快速排序hoare改进版三数取中选key法…

四:爬虫-Cookie与Session实战

四&#xff1a;Cookie与Session实战 ​ 在浏览网站的过程中&#xff0c;我们经常会遇到需要登录的情况&#xff0c;有些页面只有登录之后才可以访问。在登录之后可以连续访问很多次网站&#xff0c;但是有时候过一段时间就需要重新登录。还有一些网站&#xff0c;在打开浏览器…

基于SSM框架的仓库管理系统

基于SSM框架的仓库管理系统 文章目录 基于SSM框架的仓库管理系统 一.引言二.系统设计三.技术架构四.功能实现五.界面展示六.源码获取 一.引言 现代商业环境中&#xff0c;仓库管理对于企业的运营效率和客户满意度至关重要。传统的手工管理方式已经无法满足日益复杂的仓储需求。…

51系列--基于MPX4250的压力计仿真设计

本文介绍基于MPX4250的压力计仿真设计&#xff08;完整仿真源文件及代码见文末链接&#xff09; MPX4250是一种线性度极强的一种压力传感器&#xff0c;它的线性范围为20-250kpa,测量范围也比较广泛&#xff0c;适用于大多数场合的压力检测。 仿真图如下 仿真运行视频 51系列…

项目记录:SpringBoot+Vue部署在阿里云服务器

目录 一、服务器配置 二、后端代码打包 三、前端项目打包 四、nginx配置 一、服务器配置 部署项目需要一个服务器&#xff0c;我们可以选择阿里云的云服务器ECS&#xff0c;在实例界面可以对服务器进行管理&#xff1a; 然后需要在mobaxterm配置jdk、mysql和nginx。注意配…

计算机毕业设计JAVA+SSM+springboot养老院管理系统

设计了养老院管理系统&#xff0c;该系统包括管理员&#xff0c;医护人员和老人三部分。同时还能为用户提供一个方便实用的养老院管理系统&#xff0c;管理员在使用本系统时&#xff0c;可以通过系统管理员界面管理用户的信息&#xff0c;也可以进行个人中心&#xff0c;医护等…

html网页设计 03表格

<!DOCTYPE html> <html><head><meta charset"utf-8"><title>表格-名字</title></head><body><!-- cellspacing:单元格与单元格之间的间距 &#xff0c;默认是2个像素间距cellspadding:单元格与内容之间的间距&am…

微信小程序制作-背单词的小程序制作

微信小程序–背单词的 好久没有发过文章了&#xff0c;但是不代表着我不去学习了喽&#xff0c;以下是我最近做的东西&#xff0c;前端的UI由朋友设计的&#xff0c;目前这个是前端使用的是微信小程序后端是Python的一个轻量型框架&#xff0c;FastApi&#xff0c;嗯&#xff…