购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.8 拓展阅读:在线评测系统的工作原理

正确性是一个程序的基本要求。本书所有案例、练习、课后习题都部署在洛谷平台。洛谷能自动实时评测程序是否正确。那么在线评测系统如何评测程序是否正确呢?

其实,在线评测系统既不会“阅读”用户提交的程序,更不会去“分析”它是否正确。它采用一种非常简单的方法:通过输入/输出数据来评测程序的正确性。

具体来说,每道题目有1个或多个测试数据,在洛谷上称为测试点,这些测试数据都保存在文件里,每个测试点对应一个输入数据文件和一个正确的输出文件。在线评测系统接收到用户提交的程序后,先编译程序,如果编译出错,就报告编译错误;如果编译无误,就运行程序。在线评测系统会自动将cin、cout语句转换成从输入文件里读入数据,运行程序后,得到的输出结果保存到输出文件里。这样,每个测试点就有一个正确的输出文件,以及用户程序的输出文件。在线评测系统比对这两个输出文件是否完全一致,就知道用户程序在这个测试点上的运行结果对不对。如果完全一致,这个测试点就通过了,称为Accepted(AC)。如果不完全一致,在线评测系统会认为程序是错的,即答案错误Wrong Answer(WA)。当然,如果运行程序过程中出现错误或其他非正常的结果,会反馈其他评测结果。

从以上描述可以看出,在线评测系统在评测程序时是非常严格的,在输出时,大小写、空格、标点符号等问题都容易导致WA。

第1、2章由于还没有学输入,所有案例、练习和课后习题都没有输入,因此只有一个测试点,而且这个测试点只有输出文件,就是题目要求输出的内容。本章学了输入后,可以做到用多组数据(10组甚至20组)来评测用户程序是否正确,这样评测更加准确。在洛谷上提交代码时,可以看到每个测试点的评测结果,如图3.5所示。

图3.5 用多组数据评测程序的正确性

除在线评测系统外,各类编程竞赛、算法竞赛、编程等级考试大多采用这种评测方式。 4yHlUjEM56k2KLKqXV85c8LRxmY+HUUvLRqOpjFLgCN4STK6BwB+oUg9enjrdDe3

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开