(动态规划)Java 求解整数拆分

文章目录

    • 一、题目
    • 二、动态规划分析
    • 三、代码
    • 四、总结

一、题目

给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。
(动态规划)Java 求解整数拆分_第1张图片

二、动态规划分析

当前整数的最大值,是由拆分得到的正整数决定的,所以当前状态是由上一个状态推导而来,选用动态规划解决

(1)确定数组及下标含义

dp[i]:表示分拆数字 i ,可以得到的最大乘积 dp[i]

(2)确定递推公式

获得 dp[i]要么直接是(i-j)*j
要么:j*dp[i-j]
j 从1开始遍历到 i-1,所以对于 i 来说所有的情况都会遍历到在 (1,i-1)之间选择最大的 dp[i]
dp[i]&

你可能感兴趣的:(动态规划,java,算法,数据结构,leetcode)