完成对拍我们需要新建一个文件夹 里面有这些文件
bf是暴力写法
gen是随机生成数据用的
std是理论上的正解
对拍的目的就是
考试时不确定你的”正解“算法能得多少分
而你能基本确保你的暴力写法正确的情况下
生成数据判断正确性
下面我们以a + bproblem举例
1.我们的bf.cpp
1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 5 int s, a, b; 6 7 int main() { 8 freopen("input.txt", "r", stdin); 9 freopen("bf.out", "w", stdout); 10 11 cin >> a >> b; 12 13 for (int i = 1; i <= a + b; ++i) 14 s++; 15 16 cout << s; 17 return 0; 18 }
算是暴力了。。。
2.我们的gen.cpp
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int bigrand() { 5 return (rand() * 32768 + rand()); 6 } 7 8 int main() { 9 freopen("input.txt", "w", stdout); 10 11 srand(time(0)); 12 13 cout << bigrand() % 100000 << ‘ ‘ << bigrand() % 100000; 14 15 return 0; 16 }
bigrand()函数可以随便写 目的就是使随机的数变大 取模%可以确定范围
3.我们的std.cpp
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int a, b; 5 6 int main() { 7 freopen("input.txt", "r", stdin); 8 freopen("std.out", "w", stdout); 9 10 cin >> a >> b; 11 12 cout << a + b; 13 14 return 0; 15 }
目测是没错的
4.小总结
是的
这样
写三个cpp文件就足够了
但是一次次比对.out文件是否太烦了呢
所以我们还要学会
5.test.bat批处理 文件
右键找到编辑(win10)
1 :loop 2 gen.exe 3 std.exe 4 bf.exe 5 fc std.out bf.out 6 if not errorlevel 1 goto loop 7 pause
加上这段代码就可以了
:loop是循环的意思
下面三行是分别运行三个程序
fc代表比较 后面就写已生成的.out文件名
最后 if not errorlevel 1 goto loop
如果没有错误就继续循环
最后一定要写上pause
注意 缩进是必须按要求的
6.现在检验成果吧
如果我的std是对的那么
根本停不下来
如果是错的呢
就会这样
所以学会了吗。。。
原文:https://www.cnblogs.com/Fo0o0ol/p/11154901.html