首页 > 其他 > 详细

最简单易懂的对拍讲解

时间:2019-07-09 00:35:08      阅读:143      评论:0      收藏:0      [点我收藏+]

 

完成对拍我们需要新建一个文件夹 里面有这些文件

技术分享图片

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!