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

题目
在这里插入图片描述
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();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_43434328/article/details/115348569