- 题目描述:
给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。1
示例 1:
输入: 2
输出: 1
解释: 2 = 1 + 1, 1 × 1 = 1。
- 代码:
方法一:动态规划public int integerBreak(int n) { //dp[i]: 正整数i拆分后可以获得的最大乘积 //init:dp[0] = 0,dp[1] = 0;dp[2] = 1 //转移方程 //dp[i] = max(j * dp[i-j],j*(i-j)) //两种状态当前数可以拆和不可以拆 //return dp[n] int[] dp = new int[n+1]; dp[2] = 1;