对拍

对拍

这不是个算法,这是个方法。每当你刷毒瘤题的时候,你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;
}

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

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

WA \color{red}\texttt{WA} WA 长这个样:

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

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

祝大家学习愉快!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值