leetcode:343.整数拆分

解题思路:

拆分的越多越好(暂且认为),尽可能拆成m个近似相等的数,会使得乘积最大

dp含义:将i进行拆分得到最大的积为dp[i]

递推公式:j x dp[i-j](固定j,只通过凑dp[i-j]进而实现所有情况)

初始化:dp[0] = 0,dp[1] = 0,dp[2] = 1

遍历顺序:根据递推公式,dp[i] = max(dp[i],max(dp[i-j]*j,(i-j)*j)),所以是从前往后遍历,先有dp[i-j]再有dp[i]。

代码实现:

有两种方案:i拆分出来j之后一是不再进行拆分,二是继续拆分。(主要表现在递推公式中)

相关推荐
承渊政道3 小时前
算法复杂度
c语言·数据结构·c++·算法·visual studio
Giser探索家3 小时前
无人机数字资产采集技术架构与实践:从多维度感知到云端化建模的实现路径
大数据·人工智能·算法·计算机视觉·分类·无人机
~~李木子~~3 小时前
动态规划算法实践:从斐波那契到数字推理
算法·动态规划·代理模式
磊-4 小时前
数组双指针总结
数据结构·算法
.小小陈.4 小时前
链表算法题
数据结构·算法·链表
大飞pkz4 小时前
【算法】排序算法汇总1
开发语言·数据结构·算法·c#·排序算法
前端小L4 小时前
单调栈的“降维打击”:从直方图到矩阵——再探「最大矩形」
数据结构·算法
小丁努力不焦虑5 小时前
c++基本语法
java·c++·算法
货拉拉技术5 小时前
大模型音频水印技术:用AI守护音频数据的“身份指纹”
人工智能·算法·安全
ysa0510305 小时前
利用数的变形简化大规模问题#数论
c++·笔记·算法