切木头
Posted 好好的一个居士
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了切木头相关的知识,希望对你有一定的参考价值。
给一组长度确定的木头 如:int[]{232,124,456} 已经给定份数int k
要求,将这组木头切成不低于K的份数,得到切割够木头最短值的最大值
思想:二分查找
public static int cutMax(int[] nums,int k){
if(nums==null||nums.length==0){
return 0;
}
int start = 1;
int end = getMax(nums);
int mid;
while (start+1<end){
mid = start+(end-start)/2;
if(getPrice(nums,mid)>=k){
start = mid;
}else {
end = mid;
}
}
if(getPrice(nums,end)==k){
return end;
}
if(getPrice(nums,start)==k){
return start;
}
return 0;
}
private static int getMax(int[] nums) {
int max = nums[0];
for(int i=1;i<nums.length;i++){
max = Math.max(max,nums[i]);
}
return max;
}
private static int getPrice(int[] nums,int woodLength){
int price = 0;
for(int l:nums){
price += l/woodLength;
}
return price;
}
以上是关于切木头的主要内容,如果未能解决你的问题,请参考以下文章