public class Solution {
    /**
    * 解题思路,找出最优解的规律
    * 当target等于1,2,3的时候,结果是固定的
    * 当target大于3的时候,可以看以下数据
    * target=4, 最优解:2 2
    * target=5, 最优解:3 2
    * target=6, 最优解:3 3
    * target=7, 最优解:3 2 2
    * target=8, 最优解:3 3 2
    * target=9, 最优解:3 3 3
    * target=10,最优解:3 3 2 2
    * target=11,最优解:3 3 3 2
    * target=12,最优解:3 3 3 3
    * target=13,最优解:3 3 3 2 2
    * target=14,最优解:3 3 3 3 2
    * target=15,最优解:3 3 3 3 3
    *
    * 所以不难发现3和2的个数规律
    */
    public int cutRope(int target) {
        if(target<=1){
            return 0;
        }
        if(target==2){
            return 1;
        }
        if(target==3){
            return 2;
        }
        //数字长度
        int length=target%3==0?target/3:target/3+1;
        //数字后面2的个数
        int length2=3-target%3;
        int result=1;
        //算乘积
        for(int i=0;i<length;i++){
            result=result*(i<length-length2?3:2);
        }
        return result;
    }
}