力扣剑指offer14
数学方法:
class Solution
{
public int cuttingRope(int n)
{
//解释一下题目:绳子长度为n,切成a段,即n=n1+n2+n3+......+na
//现在要求的是:max(n1*n2*n3)
//结论:把绳子切成尽可能多长度为3的片段,这样还剩下最后一段的长度可能是0,1,2
//(1)当最后一段长度为2的时候,保留
//(2)当最后一段长度为1的时候,则一份3和剩下的这份1(即3+1)变成2+2
//题目要求至少切成两段(绳子长度至少为2)
//如果绳子的长度为2或者3的时候
if(n==2) return 1;
if(n==3) return 2;
//n=3*a+b
int a=n/3,b=n%3;
//若最后余数是0:
if(b==0) return (int)Math.pow(3,a);
if(b==2) return (int)Math.pow(3,a)*2;
if(b==1) return (int)Math.pow(3,a-1)*2*2;
return 0;
}
}
动态规划的方法: