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

  • 相关阅读:
    工厂模式之抽象工厂
    c#中的Task异步编程
    c# 异步编程
    工厂模式之工厂方法模式
    c# 多线程——入门学习
    代理模式
    工厂模式之简单工厂
    SOA面向服务架构
    [LeetCode]387. 字符串中的第一个唯一字符
    [LeetCode]7. 整数反转
  • 原文地址:https://www.cnblogs.com/yanyichao/p/3910213.html
Copyright © 2011-2022 走看看