《算法竞赛专题解析》附 A
测试数据的构造与对拍
华东理工大学 罗勇军 2020.6
文章链接:https://blog.csdn.net/weixin_43914593/article/details/106863166
本系列文章将于 2021 年整理出版,书名《算法竞赛专题解析》。
如有建议,请联系 QQ 群 567554289
目录
A.0 随机数基础
........................................................................................................................................
1
A.1 构造负数和实数
................................................................................................................................
2
A.2 构造极大范围内的随机数
................................................................................................................
2
A.3 去掉重复的随机数
............................................................................................................................
2
A.4 例题
.....................................................................................................................................................
3
A.5 对拍
.....................................................................................................................................................
4
A.6 统计执行时间
....................................................................................................................................
6
队员在 OJ 上做题时,提交到 OJ 的代码,OJ 是如何判断是否正确的?
OJ 并不看代码,而是使用“黑盒测试”,用测试数据来验证。每一题,OJ 都事先设定好很
多组输入数据 datain 和输出数据 dataout,参赛队员提交代码后,OJ 执行代码,输入 datain,
产生输出,看是否和 dataout 完全一致。
OJ 所设定的测试数据,可能非常多而且复杂,队员不可能知道,更不能手工一个个进行验
证,这时要自己构造测试数据,并且用两种代码进行对比测试。包括以下两个任务:
(1)构造数据。包括输入和输出数据。如果输入情况复杂,不能方便手工构造,而要编一
个小程序,随机生成。输出数据,则要通过下面的低效率代码来生成。
(2)两种代码。用两种算法写代码进行对比:低效率代码、高效率代码。被称为“对拍”。
低效率代码。一般用暴力法实现,代码简单、逻辑正确,它因为效率低无法通过 OJ 的时间
限制,它的用途是做为基准(benchmark)代码,产生正确的输出数据。
高效率代码,准备提交到 OJ。把它产生的输出数据,与低效率代码产生的输出数据进行对
比,如果一致,就认为是正确的,可以提交了;如果不一致,可以找到那些不一致的数据,用
来修改程序。测试数据非常重要,往往能帮助编程者找到代码的错误所在。
A.0 随机数基础
构造输入数据,需要用到随机数。c 语言中与随机数相关的函数和变量有:
评论0