zoukankan      html  css  js  c++  java
  • 对拍

    前言

    本文默认系统为Windows系列系统。

    定义

    当我们的程序过了样例,是否意味着它一定能AC呢?显然大多数情况下都是不行的。所以我们需要自己设计一些数据来测试我们的程序,但有的题目数据很大,我们肉眼无法看出程序计算的结果是否正确,手工计算又非常耗时,在紧张的比赛中,我们该怎么应对呢?于是有了对拍。 对拍简单的说就是当你写完一个题目的程序以后,再写一个暴力求解该题目的程序,然后自己生成一些测试数据,看同样的数据,两个程序输出的结果是否相同,不同意味着被对拍的程序有问题。以此来帮助你修改程序,提高通过率的方法,我们称为对拍。

    过程

    1. 准备好正解程序、暴力程序。

    2. 写生成随机数据的程序。这里提供模板:

      #include<bits/stdc++.h>
      using namespace std;
      int main() {
          srand(clock());
          //...
      }
      
    3. 写windows对拍文件。这里提供模板:

      #include<bits/stdc++.h>
      #include<windows.h>
      using namespace std;
      int main() {
          while(1) {
              system("make.exe > date.txt");//make.exe为数据生成器,date.txt为生成数据
              system("1.exe < data.txt > 1.txt");//1.exe为暴力程序,1.txt为对应输出文件
              system("2.exe < date.txt > 2.txt");//2.exe为自己的程序,2.txt类似于上
              if(system("fc a.txt b.txt")) {//对比,true为有差异
                  printf("Error!");
                  break;
              }
          }
          system("pause");
          return 0;
      }
      

    注意事项

    1. 注意输出格式。
    2. 当对拍文件停下时,data.txt即为发生错误的样例。
    3. 编数据时最好不要用原题数据,暴力会卡死。毕竟只是保证正确性,数据小一点就好。
  • 相关阅读:
    052-233(新增70题2018)
    052-232(新增70题2018)
    052-231(新增70题2018)
    052-230(新增70题2018)
    052-229(新增70题2018)
    052-228(新增70题2018)
    052-227(新增70题2018)
    052-226(新增70题2018)
    052-225(新增70题2018)
    进制之间的那点事(二进制、八进制、十进制、十六进制)
  • 原文地址:https://www.cnblogs.com/Sam2007/p/13367852.html
Copyright © 2011-2022 走看看