对于任何一个编程的人来讲,选择一门适合自己的语言都可以用一句话来形容----工欲善其事必先利其器,选择了一门适当的语言还得要深刻理解并灵活运用它的特点
我班同学参加比赛一般都用的是C语言 以唯斌大神为首. C语言大家都知道,它更接近于机器语言,程序执行起来更快一些,而Java的编程与实现更简单,对于很多问题都有现成的数据结构和算法。
由于我自己对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类&#