刷代码随想录有感(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];
    }
};

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

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

初始化:dp0=0、dp1=0、dp2=1。

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

相关推荐
垆边人似月.35 分钟前
华为机试题 :最大数
c++·算法·华为
zhenaibo5211 小时前
如何与导师有效沟通选题?
算法
熊猫钓鱼>_>1 小时前
大学图论第 6 讲:网络流与二分图匹配——对偶性让瓶颈自己现形
开发语言·算法·面试·职场和发展·图论·校招·面经
没有钱的钱仔1 小时前
最大似然估计(MLE)通俗理解
算法·机器学习·概率论
yi0111 小时前
LeetCode 424. 替换后的最长重复字符|不定长滑动窗口:如何判断窗口是否合法?
笔记·python·算法·leetcode·双指针·滑动窗口
Nebula_g2 小时前
JavaSE高级:动态代理
java·开发语言·算法·javase
垆边人似月.2 小时前
华为题:盛最多水的容器
数据结构·算法
怦然丶心动2 小时前
用 Java 把干支历法算清楚:从节气切年到可读摘要
java·算法·vue·独立开发·spring boot / spring
Zachery Pole2 小时前
具身智能强化学习(1)引言
算法·机器学习
All for pursuit.2 小时前
【动态规划-11】279.完全平方数
数据结构·c++·算法·leetcode·动态规划