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

java.io包和杯子测楼

时间: 2024-08-29 01:02:29

java.io包和杯子测楼的相关文章

1.java.io包中定义了多个流类型来实现输入和输出功能,

1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(C),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(G)   A.输入流和输出流 B.字节流和字符流 C.节点流和处理流   D.File stream E.Pipe stream F.Random stream G.Filter stream

Java io包中特殊的抽象类FilterReader和FilterWriter实践

刚才在看帮助文档的时候,发现Java io包中FilterReader和FilterWriter类没使用过,所以想实践一下. 还用以前的老方法,new一个出来,结果提示有错误: Cannot instantiate the type FilterReader 不能实例化? 一查帮助文档原来这样写道: public abstract class FilterReader extends Reader Abstract class for reading filtered character str

java io包File类

1.java io包File类, Java.io.File(File用于管理文件或目录: 所属套件:java.io)1)File对象,你只需在代码层次创建File对象,而不必关心计算机上真正是否存在对象文件. file类的几个常用方法:file.canRead() boolean ,file.canWrite() boolean,file.canExecute() boolean,file.createNewFile() boolean.(1)file.createNewFile() boole

java IO 包源码解析

本文参考连接:http://blog.csdn.net/class281/article/details/24849275                         http://zhhphappy.iteye.com/blog/1562427 一.IO包简要类图 Java I/O流部分分为两个模块,即Java1.0中就有的面向字节的流(Stream),以及Java1.1中大幅改动添加的面向字符的流(Reader & Writer).添加面向字符的流主要是为了支持国际化,旧的I/O流仅支持

JAVA io 包小结

IO 无非读写 I --> Reader  O--> Writer 为了方便字符 或者 文本文件的 操作创造出了 字符流 尤其是 缓冲字符输入输出流(BufferedReader,BufferedWriter)   readLine 的方法 简直太好用了 而底层还是用的 字节流 尤其是 缓冲字节输入输出流(BufferedInputStream,BufferedOutput)   read(字符数组,offset,len) 的方法 简直太好用了 /** * I/O 流:I->Input

java.io 包

java.io 通过数据流.序列化和文件系统提供系统输入和输出. 请参见: 接口摘要 Closeable Closeable 是可以关闭的数据源或目标. DataInput DataInput 接口用于从二进制流中读取字节,并根据所有 Java 基本类型数据进行重构. DataOutput DataOutput 接口用于将数据从任意 Java 基本类型转换为一系列字节,并将这些字节写入二进制流. Externalizable Externalizable 实例类的唯一特性是可以被写入序列化流中,

clojure.java.io包能够解决哪些io问题?

网上不少关于clojure的io的例子都喜欢用java代码来表达,难道是clojure本身提供的io不够灵活吗?很有可能是举例的作者没有仔细阅读clojure.java.io的文档.clojure.java.io应该涵盖了95%以上的使用场景,让我们一起来理一理. 可能的场景: 1.你已经有了一个String,想写入到文件中. (io/copy you-string (io/file "/tmp/xx.xx") :encode "utf-8") 2.你有了一个url

JDK框架简析--java.io包中的输入输出类库

题记 JDK,Java Development Kit. 我们必须先认识到,JDK只是,仅仅是一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含量来说,还是在一个层级上,它们都是需要被编译成字节码,在JRE中运行的,JDK编译后的结果就是jre/lib下的rt.jar,我们学习使用它的目的是加深对Java的理解,提高我们的Java编码水平. 本系列所有文章基于的JDK版本都是1.7.16. 本节内容 Java IO库提供了一个可以称之为链

JAVA IO包的整理

一:OutPutStream类: public abstract class OutputStream extends Object implements Closeable, Flushable 这个类是所有表示输出流的父类,所有继承这个类的子类都必须实现写的方法. 这个类中定义了close,flush,write方法 1.FileOutputStream : public class FileOutputStream extends OutputStream 这个类用来想文件中写入原生的数据