http://acm.hdu.edu.cn/showproblem.php?pid=3750
水题:二分查找,求查找的次数的数学期望,1-N区间的每个数出现的概率相等
#include <iostream>
#include <cstdio>
using namespace std;
void dfs(int &sum,int l,int r,int cnt)
{
if(l>r) return;
sum+=cnt;
if(l==r) return;
int m=(l+r)>>1;
dfs(sum,l,m-1,cnt+1);
dfs(sum,m+1,r,cnt+1);
}
int main()
{
int n,ans;
while(scanf("%d",&n)==1)
{
ans=0;
dfs(ans,1,n,1);
printf("%.2lf\n",ans*1.0/n);
}
return 0;
}
本文深入探讨了使用二分查找解决特定问题时的数学期望算法,详细介绍了如何通过递归函数计算查找次数的平均值,适用于1到N区间内每个数出现概率相等的情况。通过实例演示和代码实现,帮助读者理解并掌握该算法的应用。
794

被折叠的 条评论
为什么被折叠?



