leetcode 343. 整数拆分

2023.8.10

本题用dp算法来做,dpi代表的含义是:当前数字i 在拆分之后所能获得的最大乘积 。然后由于n>=2,所以dp0和dp1没有意义,不用初始化,直接初始化dp2= 1。 然后再遍历给dp数组赋值:dpi的来源有两个:①将i拆成 j 和 (i - j) ,然后相乘,即j*(i-j) 。 ② 将i 拆成 j 和(i-j), 然后(i-j)的最大拆分乘积为dpi-j,即j * dpi-j

思考画的草图:

代码如下:

cpp 复制代码
class Solution {
public:
    int integerBreak(int n) {
        vector<int> dp(n+1); //dp[i]的含义是:当前数字i拆分之后的最大乘积值。
        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];
    }
};
相关推荐
吹什么轩1 分钟前
c++复习:模拟实现list来更好的理解和应用list
开发语言·c++
AmyLin_20019 分钟前
PDF 色彩保真工程实践【5】核心实现(下):拼装 Image XObject、页面资源与内容流
c++·pdf·sdk·颜色空间·印刷·icc·cmyk
可编程芯片开发11 分钟前
基于双PI控制器结构的六步逆变器供电无刷直流电机调速simulink仿真
算法
Sagittarius_A*32 分钟前
后量子密码|通识认知 02|量子威胁核心原理:Shor 算法如何击穿传统公钥密码
算法·信息安全·密码学·量子计算
青山木44 分钟前
Hot 100 --- 在排序数组中查找元素的第一个和最后一个位置
java·数据结构·算法·leetcode
其美杰布-富贵-李1 小时前
聚类算法详解:K-means、层次聚类与 DBSCAN
算法·机器学习·kmeans·聚类
乱七八糟的屋子1 小时前
MTL4 (Matrix Template Library) 超详细实战教程|C++高性能稠密/稀疏矩阵计算
c++·矩阵·稀疏矩阵·mtl4·matrixtemplate·c++线性代数·高性能数值计算
碧海银沙音频科技研究院1 小时前
4 BES2710编译环境搭建方法
嵌入式硬件·算法
mifengxing2 小时前
LeetCode 238 除自身以外数组的乘积|无除法O(n)时间+O(1)空间双解法
java·算法·leetcode
依然鸣2 小时前
PTA团体程序设计天梯赛L2真题讲解L2-045-048
数据结构·c++·经验分享·学习·算法·pat考试·pat