对拍(windows环境)

Posted jwizard

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对拍(windows环境)相关的知识,希望对你有一定的参考价值。

“对拍“是什么

我们在调试代码时,经常会遇到困难,其中之一是程序检查不出错误,手造数据太麻烦。如果我们可以很快写出一种暴力但复杂度较高的程序,用于对比两个代码的运行答案,则可以使用对拍来检查程序存在的问题。

对拍的步骤

需要准备的文件(在同一目录下)

mk.cpp

在对拍之前,我们需要写一个mk.cpp来造数据

在main函数的前面写上一句

freopen("1.in","w",stdout);

意为:该程序运行的结果输出到名为1.in的文件里,文件打开方式为”写“(w:write),输出方式为标准输出。

mk.cpp的作用是造随机数据,所以程序里要随机出输入的数据,比如n,m,边权等,并且按给定输入格式输出到文件中。

std.cpp

用于对比答案的暴力程序。在main函数内第一行写上:

freopen("1.in","r",stdin);

意为:该程序运行时将从1.in中读入数据,文件打开方式为”写“(r:read),输入方式为标准输入。

紧接着第二行写上:

freopen("std.out","w",stdout);

意为:程序以写的方式打开std.out文件,输出方式为标准输出。

写上这两句后,该程序的输入就能读入用mk.cpp造的数据,并且将运行结果输出到std.out中。

solver.cpp

这是你在调试中的程序。在main函数的前两行写上:

freopen("1.in","r",stdin);

freopen("solver.out","w",stdout);

从1.in读入数据,输出结果到solver.out中

以上程序按顺序编译运行后,得到的exe文件也要在同一目录下。

然后就可以写一个在windows下对拍的命令行啦!

windows命令行

step 1

新建文件 dp.bat

右键,点击编辑

step 2

在编辑框内写上

mk//运行mk.exe
std
solver
fc solver.out std.out//对比两个文件,fc :file compare
if errorlevel=1 pause//如果对比出现不一致,停止程序
%0//不关闭命令窗口

保存

step 3

点击dp.bat 文件,即可自动运行

step 4

观察运行结果,如果有不一致的地方,会将输入数据,两个程序的运行结果显示在黑框内,利用该组数据来调试即可

以上是关于对拍(windows环境)的主要内容,如果未能解决你的问题,请参考以下文章

windows对拍及其应用

windows和linux下如何对拍

[科技]NOI Linux下的对拍程序

对拍源码QwQ

Windows对拍模板

『工具』对拍器