前言

信息学竞赛一般要求在一定的时间内,理解并分析题意,设计符合给定时间和空间复杂度要求的算法,并在计算机上使用一定的程序设计语言正确地实现算法。由于整个竞赛存在时间限制(特别是 ACM/ICPC 类竞赛,在解决问题数目相等的情况下以做题累计时间的多少来决定名次),因此所使用的程序设计语言能否正确、快速地实现算法对竞赛的成绩影响颇大。所以,编程复杂度越来越受到重视。编程复杂度在很大程度上与所选用的程序设计语言有关。一般信息学竞赛比较常用的程序设计语言有以下几种:BASIC、Pascal、C/C++、Java,它们的特点如表 0.1 所示。

表 0.1: 信息学竞赛常用程序设计语言的特点
BASIC Pascal C++ Java
学习难度 容易 一般 较难 较难
语言特点 简单 严谨 灵活 高度面向对象
程序运行速度 较快
库函数功能 一般 很强

在目前的中学生信息学竞赛中,Pascal 语言使用较为广泛。但是 C++ 语言凭借其本身所具有的高度的灵活性,以及它所带的库的强大功能,被越来越多的选手所使用。本文就是在这样一个背景下撰写的。在本文中,Pascal 语言以 Free Pascal1 为准;而 C++ 语言则以标准的 ANSI/ISO C++2 为准。

另外,需要注意的一点是,本文并不是参考资料。因此,对于 C++ 语言,本文不可能介绍得面面俱到,十分详细。如果想更加深入的学习 C++ 语言,可以阅读有关资料。


  1. 原因有二:1、标准 Pascal 所提供的东西实在是太少了;2、Free Pascal 在目前竞赛中使用较为广泛。推荐编译器:Free Pascal 1.0.10 (http://www.freepascal.org)。

  2. C++ 标准请参考《C++ 程序设计语言(特别版)》。推荐编译器:gcc 2.95.3 (http://www.gnu.org/software/gcc/gcc.html, http://www.delorie.com/djgpp)。