343. 整数拆分

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

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

示例 1:

复制代码
输入: n = 2
输出: 1
解释: 2 = 1 + 1, 1 × 1 = 1。

示例 2:

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

提示:

  • 2 <= n <= 58

代码:

cpp 复制代码
class Solution {
public:
    int integerBreak(int n) {
        long long dp[100001];
        dp[0] = 0;
        dp[1] = 0;
        dp[2] = 1;
        for (int i = 3; i <= n; i++) {
            int maxNum = 0;
            for (int j = 0; j <= i / 2; j++) {
                if (j * (i - j) > j * dp[i - j] && j * (i - j) > dp[i]) {
                    maxNum = j * (i - j);
                }
                else if (j * dp[i - j] > j * (i - j) && j * dp[i - j] > dp[i]) {
                    maxNum = j * dp[i - j];
                }
                else if (dp[i] > j * dp[i - j] && dp[i] > j * (i - j)) {
                    maxNum = dp[i];
                }
                dp[i] = maxNum;
            }
        }
        return dp[n];
    }
};
相关推荐
一只叁木Meow15 小时前
电商 SKU 选择器:用算法实现优雅的用户交互
前端·javascript·算法
代码中介商15 小时前
红黑树完全指南:从五条性质到完整插入删除实现
数据结构·算法
JieE21215 小时前
反转链表:从双指针到递归,吃透链表反转的核心逻辑
javascript·算法
玖釉-16 小时前
旋转图像:从矩阵转置、镜像到坐标变换的系统理解
c++·windows·算法·图形渲染
fengenrong16 小时前
20260522
算法
一条大祥脚16 小时前
Codeforces Round 1099 (Div. 2) 构造|贪心|图论|还原数组
java·算法·图论
Sheldon Chao17 小时前
Lecture 7 基于策略梯度的算法
人工智能·算法·机器学习
始三角龙17 小时前
LeetCode hoot 100 -- 缺失的第一个正整数
算法·leetcode·职场和发展
飞Link17 小时前
深度解析孪生网络(Siamese Network):从原理、技巧到实战应用
算法·数据挖掘·回归
测试狗科研平台17 小时前
洞悉微观电荷流动,VASP计算电荷密度分布
算法·云计算·开源软件