使用动态规划方法会造成溢出的情况,因此可以使用贪心算法,同理剪绳子I也可以使用贪心解决。使用贪心就要尽可能凑出长度为3的绳子,但是当最后的绳子长度为4时就不要再进行拆分了。注意每一次都要将res取余(包括最后)
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*=3;
res%=1000000007;
n-=3;
}
return n*res%1000000007;
}
};