代码对拍教程

在ACM赛场上经常碰到感觉思路是对的,样例也过了,但是wa掉了,时间充足的情况下,选择换人再写一份新的代码。然后两份代码对拍。看看在哪些数据上输出了不同的结果。

 

对拍教程:

  1. 把自己的代码(my.cpp), 队友的代码(std.cpp), 产生数据的代码(rand.cpp)放在同一个文件夹下。
  2. 创建一个文本文件,重复名为(对拍.bat)。在文本中写入如下代码:
    @echo off  
    :loop  
        rand.exe>data.txt  
        std.exe<data.txt>std.out
        my.exe<data.txt>my.out  
        fc my.out std.out  
    if not errorlevel 1 goto loop  
    pause  
    goto loop
    

      

  3. 运行(对拍.bat)。会看到两份对拍代码的结果,当遇到输出结果不同时,程序运行停止,在对应文件夹下的(data.txt)中,可以查看对应的输入数据

 

样例:  

a+b  问题, 在my.cpp中,是7的倍数时,a-1 从而造成两份代码算法上的差异。

my.cpp

#include <bits/stdc++.h>
using namespace std;
int main(){
	int a, b;
	cin >> a >> b;
	if(a % 7 == 0) a --;
	printf("%d\n", a+b);
	return 0;
}

std.cpp

#include <bits/stdc++.h>
using namespace std;
int main(){
	int a, b;
	cin >> a >> b;
	printf("%d\n", a+b);
	return 0;
}

rand.cpp

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

int main(){
	srand(time(0));
	int a = rand() % 100 + 1;
	int b = rand() % 100 + 1;
	printf("%d %d\n", a, b);
	return 0;
}

运行结果:

此时我们查看文件夹下data.txt:

这样便找出了我们所需要的输入数据

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值