leetcode 343. 整数拆分(动态规划)
创始人
2024-02-29 10:06:24
0

题目链接:343. 整数拆分

动态规划

(1) 确定 dpdpdp 数组下标含义:
dp[i]dp[i]dp[i]: 将 iii 拆分为至少两个正整数之后的最大乘积;
(2) 确定递推公式:
当 i≥2i \ge 2i≥2 时,
设 jjj 是 iii 拆分出来的第一个正整数,(1≤j≤i−11\leq j \leq i - 11≤j≤i−1),有以下两种方案:
i−ji - ji−j 不再拆分, 乘积为 j∗(i−j)j * (i - j)j∗(i−j);
i−ji - ji−j 继续拆分,乘积为 j∗dp[i−j]j * dp[i - j]j∗dp[i−j];
需要遍历所有 jjj 得到 dp[i]dp[i]dp[i], 因此
dp[i]=max(dp[i],max(j∗(i−j),j∗dp[i−j]));dp[i] = max(dp[i], max(j * (i - j), j * dp[i - j]));dp[i]=max(dp[i],max(j∗(i−j),j∗dp[i−j]));
(3) dpdpdp 数组初始化:
111 是最小的正整数, 不能拆分, 所以 dp[1]=0dp[1] = 0dp[1]=0; 其他下标均初始化为 000。
(4) 遍历顺序:
外循环 iii : 2−n2 - n2−n, 内循环 jjj : 1−(n−1)1 - (n - 1)1−(n−1), 从小到大。
(5) 举例推导 dpdpdp 数组:
n=6n = 6n=6 时:
请添加图片描述
dp[6]=9dp[6] = 9dp[6]=9 即为最终结果。

代码如下:

class Solution {
public:int integerBreak(int n) {vector dp(n + 1, 0);dp[1] = 0;for (int i = 2; i <= n; i++) {for (int j = 1; j <= i - 1; j++) {dp[i] = max(dp[i], max(j * (i - j), j * dp[i - j]));}}return dp[n];}
};

相关内容

热门资讯

行政公益诉讼典型案例:确立“诉... 行政公益诉讼典型案例确立“诉后履职不免除违法”裁判规则。 12月22日,最高人民法院、最高人民检察院...
拟写入法律!涉网络游戏等用语用... 十四届全国人大常委会第十九次会议12月22日继续审议国家通用语言文字法修订草案。草案二审稿明确,网络...
法援故事 | 农民工兄弟讨薪无... 编者按:法律援助是国家建立的为经济困难公民无偿提供法律服务的制度。近年来绵阳市两级法律援助中心始终秉...
两高典型案例:行政公益诉讼督促... 法检机关以行政公益诉讼促进妇女平等就业权益保障。 12月22日,最高人民法院、最高人民检察院联合发布...
最高法:行政公益诉讼的案件领域... 12月22日,最高人民法院举行新闻发布会,发布第三批行政公益诉讼典型案例。 本次发布的典型案例,涵盖...
新华社消息|托育服务法草案等一... 记者:董博婷、范思翔、赵博 编导:沈倩 新华社国内部 新华社音视频部 联合制作
国家医保局:“十五五”时期长期... 在2025全国长期护理保险高质量发展大会上,国家医保局党组书记、局长章轲在致辞时表示,经过试点,长期...
森远股份:将通过完善经营管理制... 有投资者在互动平台向森远股份提问:“公司好不容易扭亏为盈 但是已经很久没有分红了 考虑进行分红吗今年...
十年来全国检察机关共办理公益诉... 新华社北京12月22日电(记者冯家顺)2015年7月至2025年9月,全国检察机关共办理公益诉讼案件...
广告语被指“大字吹牛” 公牛集... 近期,插线板行业龙头公牛集团因常年沿用的一句“10户中国家庭,7户用公牛”广告语与中山市家的电器有限...