对拍程序

Posted WayToAccept

tags:

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

在oj上提交程序,总是出现wa的时候会很苦恼,特别是你不知道那里错了的时候。

别怕,有了对拍程序,你再也不用担心找不出原因了!

对拍程序,是一个很好用的工具,上升一下,其实就是自动化测试工具

现在有A、B和C三个程序,其中A是完全正确的程序,B是你自己写的有一些bug(假如有的话),C是输入样例生成程序。


我们想让C自动随机生成输入样例data.in,然后A,B同时以data.in作为输入,产生各自的输出文件A.out,和B.out,最后对比两个输出。

如果输出文件相同(多次测试后),那么就可以假定A和B是等价的(A正确,B就正确);否则就是B程序在某个样例上与A对不上。这样就能帮我们更快定位bug。


现在我们让程序自动完成上面两行的工作,那么这个程序就是对拍程序,不妨称它为D程序:

D程序长这样:


#include <stdio.h>
#include <windows.h>
int main()
    int t=100;
    while(t--)
        system("C.exe>data.in");
        system("A.exe<data.in>A.out");
        system("B.exe<data.in>B.out");
        if(system("fc A.out B.out")) break;
    
    system("pause");
    return 0;


其中“<”为重定向输入,“>”为重定向输出

运行时要把A.exe B.exe 和C.exe放在D的工程目录下




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

模板对拍程序

对拍程序讲解及源码举例

对拍程序的写法

制造测试数据的程序及对拍程序概述(Like CyaRon)

对拍程序

对拍(windows环境)