结论:选用尽量多的3,直到剩下2或者4时,用2
/*
*
*选用尽量多的3,直到剩下2或者4时,用2
*如果有三个以上的2,那么 3×3>2×2×23×3>2×2×2,所以替换成3乘积更大;
*所以最多能拆成两个2,即4
*/
class Solution {
public:
int maxProductAfterCutting(int n) {
if(n<=3) return 1*(n-1);//边界情况。
int res =1;
if(n % 3 == 1) //拆成两个2.即4
{
res = 4;
n = n-4;
}
//绳子中有2
else if(n%3 == 2)//只能拆成一个2
{
res =2;
n=n-2;
}
//只有3
while(n)
{
res=res*3;
n-=3;
}
return res;
}
};