对拍程序讲解及源码举例
对拍程序 一、介绍 在做题或者正式比赛过程中总会把水题做水做乱,但因为样例有坑所以直接过了样例,然后拿去评测结果发现全WA。那如何在这种情况下检查自己程序或算法的正确性呢?对拍是一个 简便省事 的方案。 所谓“对拍”,顾名思义,就是让两者 相互比对 。所谓“两者”,一是你要 测试的程序 ,二是一个答案在该程序 在一定范围(时间/空间)内结果必定正确的程序 (一般是用暴力求解的程序) 。 两个程序准备好编译好了以后,就可以开始准备测试用的输入样例了。但是输入样例要是人为准备起来的话肯定浪费时间还费脑,更别提在正式比赛的时候了。人脑靠不住,那就靠电脑。 为了让测试的样例 更全面 ,我们可以用 伪随机数 的方法。我们需要用到这几个高贵妖艳的头文件: #include <cstdio> #include <ctime> #include <cstdlib> 在高中数学的统计知识中学过的随机抽样,可以用随机数表法选取一些随机的数值。在生成随机数时也是用这个原理。首先 利用srand()函数 在随机数表中找一个点,作为取随机数的 起始点 。但是如何做到每次选不同的起始点来取数呢? 时间是一直在变化的 ,所以用time(0)取系统时间放入srand()函数中去, 每次取的起始点都不一样 。 如果用固定值的话,每次取得的随机数都会是一样的 。 接下来