本文共 461 字,大约阅读时间需要 1 分钟。
相同题目:
使用动态规划解题:
- 使用dp数组存储直到 n 的最大乘积。
- dp[n] 就是要返回结果
- dp[0] = dp[1] = 0 : 这意味dp数组从索引 2 开始递推
- dp[i] 存放 i 的最大乘积
- dp[i] 有两种情况:假设 j 是其中一段的长度,另一个乘积有两种可能
- 只有两段 j、i-j ; 其乘积是 j * (i-j) :题目要求 m>1,所以至少两个,即 j 不能等于 0;
- 或者 j 和 dp[i-j] 多段构成,dp[i-j] 是之前存储的 i-j 的最大乘积
- 使用 max 函数和当前 curMax 比较取最大值,保留多个结果中的最大值;
class Solution { public int cuttingRope(int n) { int[] dp = new int[n+1]; for(int i=2;i<=n;i++){ int curMax = 0; for(int j=1;j
转载地址:http://ypozi.baihongyu.com/