gpt4 book ai didi

c++ - 二进制搜索到实数函数的上限

转载 作者:太空宇宙 更新时间:2023-11-04 11:25:54 25 4
gpt4 key购买 nike

给定一个整数 X,我需要找到最大整数 N,使得 N*log(N) <= X。

我正在使用二进制搜索来计算答案,但我认为在某些情况下循环会无限运行。

这是我的二进制搜索函数:

int f(int X)
{
int lo=1, hi=time;
while(lo < hi)
{
int mid = lo + hi;
mid/=2;
if(mid*log2((double)mid) == X)
{
return mid;
}
if(mid*log2((double)mid) <= X)
{
hi = mid;
}
else lo=mid;
}
return lo;
}

我的方法正确吗?如果是,我的代码中的错误是什么?如果不是,正确的做法是什么?

最佳答案

考虑如果 hi - lo == 1 会发生什么。在这种情况下,mid 等于 lo,因此 lo = mid 是空操作,您可能会陷入无限循环。

关于c++ - 二进制搜索到实数函数的上限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26699689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com