考场调试技巧

对拍

对拍的原理是:通过暴力程序和自己的程序输出对比来检查自己程序的错误。

好打的模板:

#include <cstdio>
#include <cstdlib>
int main() {
  int T=100;
  while (T--) {
    system("data.exe");  // 数据生成器将生成数据写入输入文件
    system("std.exe");  // 获取程序1输出
    system("baoli.exe");  // 获取程序2输出
    if (system("fc std.out std.ans")) {
      // 该行语句比对输入输出
      // fc返回0时表示输出一致,否则表示有不同处
      system("pause");  // 方便查看不同处
      return 0;
      // 该输入数据已经存放在test.in文件中,可以直接利用进行调试
    }
  }
}

简易 checker

这个简易 checker 是用来查出自己程序输出和样例答案不同的地方,考场上,靠裸眼不一定能发现自己程序输出和样例答案不同的地方,这时候就可以写一个简易 checker

好打的模板:

//本模板适用于多行输出,且每行输出只有一个数字。
#include<bits/stdc++.h>
using namespace std;
#define int long long //看数据范围
int n/*输出行数*/,a[100010]/*每行输出的数*/;
signed main(){
  freopen("std.out","r",stdin); //此时需要把输出文件和答案文件整理道同一个文件中,第一行写输出文件的行数,然后写输出文件和答案文件。
  freopen("result.txt","w",stdout);
  cin>>n;
  for(int i=1;i<=n;i++){
    cin>>a[i];
  }
  for(int i=1;i<=n;i++){
    int x;
    cin>>x;
    if(x!=a[i]){
      cout<<"WA";
      return 0;
    }
  }
  cout<<"AC";
  return 0;
}
posted @ 2024-10-23 08:39  CJZJC  阅读(11)  评论(0编辑  收藏  举报