刷代码随想录有感(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之前可拆得最大。

相关推荐
ZhengEnCi21 小时前
Agent 架构怎么选:从单 Agent 到多 Agent 编排的选型决策指南
算法·架构
秋天的怀念_David21 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Pniubi1 天前
力扣283移动零(双指针法)
算法·leetcode·职场和发展
hhb_6181 天前
大模型落地三重优化实战
人工智能·算法·机器学习
云和数据.ChenGuang1 天前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain
2601_970703831 天前
工业除湿机租赁:把一份租金合同拆开看
大数据·数据结构·算法·数据库架构·推荐算法
心中有你02141 天前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
ZhengEnCi1 天前
同样的模型,为什么本地和云 API 差别那么大:量化精度、聊天模板与采样参数的三大元凶
人工智能·算法·llm
Flynn Liang1 天前
RAG 答非所问/幻觉怎么破?Spring AI QuestionAnswerAdvisor 召回优化实战(TopK/重排/混合检索)
人工智能·算法·spring·rag·幻觉·springai
liminla!1 天前
SQL 从入门到进阶:语法速查与实战练习(完整优化版)
数据库·sql·算法