剑指 Offer 14- II. 剪绳子 II(dp)

该博客介绍了如何在Java中处理大数运算,特别是当`long`类型无法满足需求时,使用`BigInteger`类进行大数乘法和取最大值的操作。代码示例展示了一个名为`Offertwo`的类,其中的`cuttingRope`方法通过动态规划计算绳子切割的最大值,并确保结果不超过10^9+7的模。
摘要由CSDN通过智能技术生成

题目
在这里插入图片描述
long会炸 只能用BIgInteger了
注意一下大数的乘法运算和取max
BigInteger.max(BigInteger a)返回自身和a的最大值

import java.math.BigInteger;
public class Offertwo {
    public int cuttingRope(int n) {
        if (n == 2) return 1;
        if (n == 3) return 2;
        BigInteger dp[] = new BigInteger[n+1];
        dp[1] = new BigInteger("1");
        dp[2] = new BigInteger("2");
        dp[3] = new BigInteger("3");
        for (int i = 4; i < n+1; i++) {
            dp[i] = dp[i-2].multiply(new BigInteger("2")).max(dp[i-3].multiply(new BigInteger("3")));
        }
        return  dp[n].mod(new BigInteger("1000000007")).intValue();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值