我试图找到最大的最小值,我可以在一个区间内放置一些数字。同样在区间中,根据输入存在间隙。
while(high-low>0)
{
mid=(high+low)/2.0;
distance=0;
for(int posts=1; posts<p; posts++)
{
//the gap in the interval
if( distance+mid>a && distance+mid<b)
{
//if the digits falls between the gap
//continue the search from the edge of the gap's end
distance = b;
posts++;
}
distance += mid;
if(distance>length)break;
}
if(distance==length)return mid;
else if(distance<length)low=mid;
else high=mid;
}
我遇到的问题是,对于某些值,这不起作用。
distance
将接近length
,但不会相等。
我尝试对distance
进行舍入,但之后的值将不正确。
示例:
你有0-9和10个单位的距离。在5-7之间存在间隙,其间没有单位可以放置,现在我们必须找到距离使得没有2个单位小于这个距离。