剪绳子
剪绳子
http://www.nowcoder.com/questionTerminal/57d85990ba5b440ab888fc72b0751bf8
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;
}
}


查看14道真题和解析