zoukankan      html  css  js  c++  java
  • java.io包和杯子测楼

    1 java.io

    字符流:Reader

    字节流:InputStream

    2 杯子测楼

    一种杯子,若在第N层被摔破,则在任何比N高的楼层均会破,若在第M层不破,则在任何比M低的楼层均不会破,给你两个这样的杯子,让你在100层高的楼层中测试,要求用最少的测试次数找出恰巧会使杯子破碎的楼层。

    分析:

    1 如果只有一个杯子,则需要从第1层往上,逐层测试。

    2 现在多了一个杯子,就可以用这个杯子确定临界楼层的大致区间,然后第一个杯子用分析1的方式继续。需要测试的次数约为100^(1/2)=10

    解答:

    1 将100层分K个连续的楼层,每个楼层区间的楼层数为F层,这样,问题就变成了用第一个杯子确定楼层区间,用第二个杯子确定临界楼层的问题。

    2 从第一个楼层区间开始测起,所以第Ki个楼层区间的测试次数比第Ki-1个楼层区间多一次。

    3 测K次最多能测出临界楼层的最高楼层数为:S=K+(K-1)+……+1=(K^2-K)/2

    4 对于本题S>100,解得K=14

    扩展:

    1 如果有3个杯子,K次能测出临界楼层的最高楼层数为:S=S2(K)+S2(K-1)+……+3=(K^3-K)/6

  • 相关阅读:
    UrlRewriter
    PortalBasic Web 应用开发框架
    首页静态化和定时执行
    细谈在C#中读写Excel系列文章之四
    Ubuntu安装SVN及SvnManager
    Select语句导致瓶颈
    策略模式
    抽象工厂
    递归优化之快速排序
    从安装git开始,一步一步把程序发布到AppHarbor
  • 原文地址:https://www.cnblogs.com/yanyichao/p/3910213.html
Copyright © 2011-2022 走看看