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; } }