LeetCode 343. 整数拆分——动态规划

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

题解

class Solution {
public:
int integerBreak(int n) {
vector<int> dp(n + 1, 0); // 初始化为0,避免初始值干扰
dp[0]=1;dp[1]=1;dp[2]=1;
for (int i = 3; i <= n; ++i) {
for (int j = 1; j < i; ++j) {
// 比较直接拆分(j*(i-j))和继续拆分(j*dp[i-j])
dp[i] = max(dp[i], max(j * (i - j), j * dp[i - j]));
}
}
return dp[n];
}
};
发布于   xiins  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示