二进制搜索以查找最大最小值

时间:2016-04-23 18:58:02

标签: c++11 binary-search

我试图找到最大的最小值,我可以在一个区间内放置一些数字。同样在区间中,根据输入存在间隙。

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个单位小于这个距离。

0 个答案:

没有答案