对拍

· · 个人记录

对拍

前置知识

首先,听完了OYDS大奆的讲话,学费了很多,首先是可以加入几个工具栏指令来获得更严密的编译(就是能找到一些不容易发现的错误)。

首先,进入Dev-C++,点击【工具】,选择第一个【编译选项】,进入之后在上面的方框输入


-Wall -Wshadow  -std=c++11

然后就可以了。

生成数据

进行对拍前,需要先编写生成数据的程序,必须用到的是随机数函数:

mt19937 rnd(time(0));
//当然,用这个必须提前加入指令:
//-std=c++11

一般地,使用就是通过:

int random_number = rand % [数据范围的上限];
//即生成数据范围内的随机数

可以根据题目的输入格式来进行生成(一般按照输入方式就行)

生成后一定记得输出!!!顺便添加适当的回车!!!

对拍

对拍本质上就是不断随机生成数据,代入自己的程序和正解来判断程序哪里有问题。

#include <bits/stdc++.h>
using namespace std;

int main()
{
    static int cnt;
    while(1)
    {
        if (cnt == 100)
        {
            cout << "恭喜你AC了这道题!!!!!!"; 
            break;
        }
        system("生成.exe > a.in");
        system("调试中的代码.exe < a.in > mine.out");
        system("正解.exe < a.in > ac.out");
        if(system("fc mine.out ac.out"))
        {
            break;
        //如果运行出来的答案不同就停止。
        }
        cnt++;
    }
    return 0;
}

注意事项