• 对拍


    对拍

    这不是个算法,这是个方法。每当你刷毒瘤题的时候,你WA了一天,实在找不出一个能卡死自己代码的数据,这时候,你就需要对拍。

    对拍需要的东西(所有程序不需要文件输入输出):

    1.你的程序(就是你的错误程序)
    QQ图片20200213201200.png

    2.正确程序(题解中的标答 或 会TLE的正确暴力代码)
    QQ图片20200213201222.png

    3.数据程序(能随机生成输入数据的程序,刚开始先把数据搞小一些,如果拍不出错就调大数据)
    QQ图片20200213201252.png

    4.对拍程序(能组织一切的领导者程序):
    程序中的文件名根据你的程序的名字而定。
    一个对拍程序一次能多次执行对拍,最多只能发现一个能卡死你的程序的数据
    1Okze1.png

    #include <bits/stdc++.h>
    using namespace std;
    int main(){
        while(1+1==2){ //只要不发现你的代码错误就一直找
            system("data.exe>data.txt"); 
            //运行data.cpp,把输出放到data.txt文本文档中
            system("3311biaoda.exe<data.txt>3311biaoda.txt");
            //运行正确程序3311biaoda.cpp,输入data.txt文本文档中的输入数据,把输出放到3311biaoda.txt文本文档中
            system("3311.exe<data.txt>3311.txt");
            //运行你的程序3311.cpp,输入data.txt文本文档中的输入数据,把输出放到3311.txt文本文档中
            if(system("fc 3311.txt 3311biaoda.txt")){
            //对比两个文本文档,如果不一样返回true
                puts("WA"); //发现你的代码错误
                break;
            } else puts("AC");//这个数据通过
        }
        return 0;
    }
    

    都写好后,把这些程序都放到一个文件夹中。再依次点开文件夹中的程序(如果你直接执行你写的程序会找不到文件)。 然后你运行 ( exttt{duipai.cpp}),会这样:

    1O9BSs.png
    然后你等待一个 ( exttt{WA}) 出来,如果你的数据过小,可能要等几个小时;如果你的过大,可能虽然找到了你的程序过不了的数据,你也看不出为什么错了。

    ( exttt{WA}) 长这个样:

    1OFZ1H.png
    这时候,你打开文件夹(就是你把程序都放哪儿的那个文件夹),它会变成这个样:
    QQ图片20200213202416.png
    然后你打开 ( exttt{data.txt}),就是你的程序过不了的数据。比如会长下面这个样(随你的题目而变):

    1OV0sJ.png
    然后一次对拍就结束了。如果你觉得这个样例不合适或者这个样例你已经能过了,你就再执行一次 ( exttt{duipai.cpp}),再等一个 ( exttt{WA}),然后再打开一次 ( exttt{data.txt})

    祝大家学习愉快!

  • 相关阅读:
    Qt 单元测试
    用gcov来检查Qt C++程序的代码覆盖率
    QT .pro文件中的变量说明
    ubuntu 14.04 升级到18.04
    VMware虚拟机中调整Linux分区大小——使用GParted
    JSoup 用法详解
    java内存分配
    Java常量定义需要注意的两点
    java中的容器解释
    JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配
  • 原文地址:https://www.cnblogs.com/George1123/p/12493431.html
Copyright © 2020-2023  润新知