ACM中对编程语言的感悟
对于任何一个编程的人来讲
,
选择一门适合自己的语言都可以用一句话来形容
-----
磨刀不误砍柴工
,
更有一句工欲善其事必先利其器
,
选择了一门适当的语言还得要深刻理解并灵活运用它的特点。
我们这次参加比赛使用的是
Java
语言。按照常理讲,一般的真正的
ACM
高手至少会撑握两到三门语言,比如说
C
语言和
Java
,
C
语言大家都知道,它更接近于机器语言,程序执行起来更快一些,而
Java
的编程与实现更简单,对于很多问题都有现成的数据结构和算法。
由于我自己对
JAVA
稍微熟悉一些,就谈谈
ACM
中
JAVA
的使用吧。对于其它的语言在这里就不多说了。
正如前面所说的,许多问题
JAVA
中都已经有了现成的数据结构和算法。首先看看大数运算方面的问题,
JAVA
中有两个类,
BigInteger
和
BigDecimal
,两个用字符串实现的大整数和大十进制类,它们可以处理任意长度和精度的整数与十进制数,其中的有许多方法高效实现了大整数与大十进制数的各种运算,对于
BigDecimal
还可以设置精度。对于一些大数运算问题就可以直接使用,非常实用。
接下来就是要灵活运用的就是
Java
自身的数据结构类了,包括
collection
接口里的实现类和子类,另外还有
Map
映射抽象类及子类等。在
ACM
中
TreeSet
和
TreeMap
是两个最常用的数据结构类,
TreeSet
和
TreeMap
都能够实现其内容自然排序,
Set
不允许其中的元素重复,
Map
能实现键到值的映射。这两个类配合泛型的使用,使用起来将十分方便和有用。
Arrays
是
JAVA
中的数组排序类,可以实现到
Object
类数组的快速排序,并且还可以进行二分查找,当然在使用二分查找的时候肯定是要先排序的啦。
JAVA
中实现数据的输入也非常方便,一般有两种方式,文件输入和标准控制台输入;输出同样有两种,文件输出和标准控制台输出。我们参加的这次比赛就是文件输入和标准控制台输出。对于
Java5
和
JDK1.4
的输入也有少许差别,
Java5
有一个简单的
Scanner
类,对于少量的数据输入建议使用
Scanner
类,而对于大量数据输入的话还是建议采用
BufferedReader
类,对于
JDK1.4
就只有全部使用
BufferedReader
了。输出的话,一定要把
File ,FilerWrite,PrintWrite
三个类的细节搞清楚。这里也不多讲,列出这几个输放输出的具体使用实例吧:
输入:
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
BufferedReader input = new BufferedReader(new FileReader(“1.txt”));
Scanner input = new Scanner(System.in) ;
输出:
System.out.println();
System.out.printf();