题目链接:剪绳子
思路:由于n的范围变大了,无法使用动态规划,因为动态规划需要比较大小,而含有取模运算的数值是没法比较大小的。所以,参考题解。当n大于4时,尽量多地取3,当n小于4时,绳子就不进行分割了,因为怎么分绳子都不如自身乘进去来得大。
代码:
class Solution {
public int cuttingRope(int n) {
if(n <= 3) return n-1;
if(n == 4) return 4;
long res = 1;
while(n > 4){
res = (res * 3) % 1000000007;
n -= 3;
}
return (int)(n * res % 1000000007);
}
}