zoukankan      html  css  js  c++  java
  • 100楼扔鸡蛋

    100楼扔2个鸡蛋测试?

    关键在于egg1+egg2的总测试次数为常量c。

    假设egg1第一次在x楼,如果鸡蛋摔碎了,那么egg2要测试x-1次,总计1+(x-1);

    如果鸡蛋没碎,那么egg1继续上升y楼,到达x+y楼,那么egg2要测试y-1次,总计1+1+y-1 = x,那么y=x-1

    同理。。。

    由此可见,为了保证egg1+egg2的总测试次数为常数c,对于egg1每次上升的次数依次为x,x-1,x-2,...1

    那么只要x+(x-1)+(x-2)+...+1 = x(x+1)/2>100求得x=14

    解释:egg1在14楼,27楼,39楼,50楼,60楼,69楼,77楼,84楼,90楼,95楼,99楼。

    比如鸡蛋在14楼碎了,那么测试楼为14,1-13

    鸡蛋在27楼碎了,那么测试楼为14,27,15-26

    。。。

    http://blog.csdn.net/lzshlzsh/article/details/5951447

    变种题目

    甲、乙两个人在玩猜数字游戏,甲随机写了一个数字,在[1,100]区间之内,将这个数字写在了一张纸上,然后乙来猜。
    如果乙猜的数字偏小的话,甲会提示:“数字偏小”
    一旦乙猜的数字偏大的话,甲以后就再也不会提示了,只会回答“猜对 或 猜错”
    问: 乙至少猜(14) 多少次  猜可以准确猜出这个数字,在这种策略下,  乙猜的第一个数字是(14)。

    分析:思想是:每次猜大后,尝试猜测的总次数是相等的。第一次猜测时,在1到100之间选择某个数N1后,有三种情况,一是直接选中了,这个概率比较小,对研究没有意义,二是选择偏大了,这时不再提示了,只能在1至N1-1之间一个一个地选了,三是选择偏小了,这时还有提示,可以继续在[N1+1,100]中选择另外的数N2。可以知道,若第一次就猜错了,那么尝试总次数是N1-1+1=N1次(因为是在[1,N1-1]之间逐一取值,且N1本身用掉一次),若第一次猜得偏小,但第二次猜大了,尝试总次数是[N1+1,N2-1]的元素个数加2(加2是N2和N1本身猜用掉一次),即为N2-N1+1次,根据思想“每次猜错后,尝试猜测的总次数相等”,有N1=N2-N1+1,可知N2=2N1-1,增量为N1-1。类似地,前两次猜得偏小,但第三次猜大,尝试总次数为[N2+1,N3-1]的元素个数加3,即N3-N2+2,那么有N3-N2+2=N1,N3=N2+N1-2,增量为N1-2……依此类推,增量是随着猜测次数的增加而逐1地减少。设最后一次猜测为k,则Nk=N1+(N1-1)+(N1-2)+…1,Nk是等于或大于100的第一个数,根据等差数列求和公式可以算出N1=14,N2=27,N3=39…(14,27,39,50,60,69,77,84,90,95,99)。

    个人学习笔记,欢迎拍砖!---by hellogiser

    Author: hellogiser
    Warning: 本文版权归作者和博客园共有,欢迎转载,但请保留此段声明,且在文章页面明显位置给出原文连接。Thanks!
    Me: 如果觉得本文对你有帮助的话,那么【推荐】给大家吧,希望今后能够为大家带来更好的技术文章!敬请【关注】
  • 相关阅读:
    SSIS 小脚本 文件路径验证
    SSIS 小脚本 时间参数验证
    索引 唯一索引设计指南
    容易遗忘的一些小代码之 ROW_NUMBER 和去重
    MSDNMDX#001 多维表达式 (MDX) 参考
    数据库引擎 页和区体系结构页和区
    数据库引擎 文件和文件组体系结构
    索引 索引键的最大大小
    索引 在文件组上放置索引
    索引 常规索引设计指南
  • 原文地址:https://www.cnblogs.com/hellogiser/p/100-floor-throwing-eggs.html
Copyright © 2011-2022 走看看