刷代码随想录有感(102):动态规划——整数拆分

题干:

代码:

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];
    }
};

dp[i]含义:i这个数被拆分且取乘积的最大值。

递推公式:①拆成两个:j 和 i - j;②拆成两个以上:j 和 dp[i - j],且dp[i]是dp[i]、j*(i-j)、j*dp[i-j]中的最大值(包括dp[i]的原因是dp[i]不断被更新取最大值),max()一次只能比较两个数。

初始化:dp[0]=0、dp[1]=0、dp[2]=1。

遍历顺序:从3开始,通过找规律有在i/2之前可拆得最大。

相关推荐
ExRoc34 分钟前
蓝桥杯真题 - 填充 - 题解
c++·算法·蓝桥杯
利刃大大1 小时前
【二叉树的深搜】二叉树剪枝
c++·算法·dfs·剪枝
天乐敲代码3 小时前
JAVASE入门九脚-集合框架ArrayList,LinkedList,HashSet,TreeSet,迭代
java·开发语言·算法
十年一梦实验室3 小时前
【Eigen教程】矩阵、数组和向量类(二)
线性代数·算法·矩阵
Kent_J_Truman3 小时前
【子矩阵——优先队列】
算法
快手技术5 小时前
KwaiCoder-23BA4-v1:以 1/30 的成本训练全尺寸 SOTA 代码续写大模型
算法·机器学习·开源
一只码代码的章鱼5 小时前
粒子群算法 笔记 数学建模
笔记·算法·数学建模·逻辑回归
小小小小关同学5 小时前
【JVM】垃圾收集器详解
java·jvm·算法
圆圆滚滚小企鹅。5 小时前
刷题笔记 贪心算法-1 贪心算法理论基础
笔记·算法·leetcode·贪心算法
Kacey Huang5 小时前
YOLOv1、YOLOv2、YOLOv3目标检测算法原理与实战第十三天|YOLOv3实战、安装Typora
人工智能·算法·yolo·目标检测·计算机视觉