给定一个正整数 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。

步骤一、确定状态:

确定dp数组及初始化含义 dp[i]:分拆数字i,可以得到的最大乘积为dp[i]。

步骤二、推断状态方程:

1.j×(i−j)可以得到一个i的乘积, 这个是每个数拆分成2个正整数相加的情况的乘积 2. j×dp[i−j]
3. dp[i]
4.从当前j这里获得的最大乘积为:max(j×(i−j),j×dp[i−j]) 而当前i处获得的最大乘积: dp[i]=max(max(j×(i−j),j×dp[i−j]),dp[i])

步骤三、规定初始条件:

初始条件:
dp[0], d[1]是没法分解的,所以从dp[2]开始,初始化为1即可

步骤四、计算顺序:

这个题目需要两层遍历了,因为当前i的dp值,需要依赖于前面的所有dp值。 i从3到n遍历

j从1到i−1遍历

class Solution:def integerBreak(self, n: int) -> int:dp = [0] * (n+1)dp[2] = 1for i in range(3, n+1):for j in range(1, i):dp[i] = max(max(j*(i-j),j*dp[i-j]), dp[i])return dp[n]

87. Leetcode 343. 整数拆分 (动态规划-基础题)相关推荐

  1. LeetCode 343. 整数拆分(动态规划)

    题目描述 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1 ...

  2. leetcode - 343. 整数拆分

    343. 整数拆分 -------------------------------------------- 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获 ...

  3. LeetCode 343. 整数拆分(DP)

    1. 题目 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = ...

  4. leetcode 343. 整数拆分(Integer Break)

    目录 题目描述: 示例 1: 示例 2: 解法: 题目描述: 给定一个 正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 示例 1: 输入: 2 输出: ...

  5. 84. Leetcode 70. 爬楼梯 (动态规划-基础题)

    假设你正在爬楼梯.需要 n 阶你才能到达楼顶.每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢?示例 1:输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶. 1. 1 阶 ...

  6. LeetCode-动态规划基础题-343. 整数拆分

    描述 343. 整数拆分 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 ...

  7. 整数拆分 python_LeetCode 343. 整数拆分 | Python

    343. 整数拆分 题目 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 ...

  8. 剑指Offer 14- I. 剪绳子(Medium)/ 剪绳子 II(Medium)/ 343. 整数拆分(Medium)

    剑指Offer 14- II. 剪绳子 II(Medium) 343. 整数拆分(Medium) [题目连接] 题解 剪绳子(数学推导 / 贪心思想,清晰图解) 图解[暴力递归][记忆化技术][动态规 ...

  9. 《dp补卡——343. 整数拆分、96. 不同的二叉搜索树》

    343. 整数拆分 1.确定dp数组以及下标含义. dp[i]:分拆数字i,可以得到的最大的乘积 2.确定递推公式: dp[i]最大乘积出处:从1遍历j到i,j * dp[i-j] 与 j * (i- ...

最新文章

  1. Spring Boot与ActiveMQ的集成
  2. 《当代 95 后の北上广出逃计划》
  3. Java—FileOperator
  4. 1.VMware Workstation 12 中安装CentOS
  5. W3C DOM操作之创建新节点
  6. vue.js中的组件是什么?
  7. 大数据之-Hadoop3.x_MapReduce_WordCount案例集群运行---大数据之hadoop3.x工作笔记0093
  8. static_cast、dynamic_cast、reinterpret_cast、和const_cast
  9. android sendmessage和post的区别,Handler的sendMessage和postDelay的区别
  10. java时区_Java时区
  11. c# word文档与二进制数据的相互转换
  12. h5制作的简易单机球球大作战
  13. UiPath调用超级鹰识别验证码
  14. 物联网和工业物联网有什么区别?
  15. Science:拟南芥根系三萜化合物塑造特异的微生物组
  16. 简单的定时任务(项目发布时启动,停止时任务结束)
  17. 借呗还完之后为什么关闭了_蚂蚁借呗怎么突然关闭了 蚂蚁借呗关闭后怎么重开...
  18. html语言web应用开发,使用HTML5框架加速Web开发
  19. 短信验证码(俗称接码平台)分享定义是什么
  20. 【Win8自带微软输入法删除图解】

热门文章

  1. [LeetCode] Combinations
  2. 即使是一个技术人员,也需要知道沟通的重要性
  3. C#连接EXCEL数据库
  4. Virtual ListView效率对比
  5. CSP认证201312-2 ISBN号码[C++题解]:简单题
  6. PAT甲级1004 Counting Leaves (30分):[C++题解]树、邻接表存储树、dfs遍历树
  7. C++容器map可以排序吗?
  8. python load_Python实例:numpy.load()的使用
  9. gps卫星位置计算程序matlab_卫星空间大地测量中GPS周跳探测的四种方法
  10. flink checkpoint 恢复_Flink断点恢复机制