
注意int表示范围有限
所以用bigInteger的大数对象来表示大数 防止int表示越界问题
import java.math.BigInteger;
class Solution {
public int cuttingRope(int n) {
BigInteger[] dp = new BigInteger[n + 1];
Arrays.fill(dp, BigInteger.valueOf(1));
// dp[1] = BigInteger.valueOf(1);
for(int i = 3; i < n + 1; i++){
for(int j = 1; j < i; j++){
dp[i] = dp[i].max(BigInteger.valueOf(j * (i - j))).max(dp[i - j].multiply(BigInteger.valueOf(j)));
}
}
return dp[n].mod(BigInteger.valueOf(1000000007)).intValue();
}
}

本文探讨了使用BigInteger解决整数范围受限的问题,并通过动态规划实现了绳子切割问题的最优解。采用Java实现,展示了如何避免整数溢出并求得特定条件下最大乘积。
389

被折叠的 条评论
为什么被折叠?



