当前位置:   article > 正文

ACM简易对拍程序写法_简单对拍写法

简单对拍写法


对拍程序简介

一、对拍程序的用途


通过读入一系列测试数据,用两个程序分别运行出结果,比较两个程序运行结果的差异。


二、什么时候用对拍

ACM比赛时,我们经常会遇到一个问题,就是你写了一份代码,信心满满地submit,结果返回的总是WA,而且你也找不出什么测试样例能把自己的代码叉掉,那个这个时候如果条件允许的话(比如题目可以写个小范围暴力等等得到必定正确的结果),可以试着用对拍。


三、对拍程序的优点

比起手动对拍,写个对拍程序效率比较高,每次能比较大量的数据。


四、对拍程序的写法

我们随便以一道题为例进行解释。



1. 新建文件夹


在一个磁盘中建立一个对拍文件夹(我选择C盘,但哪个盘无所谓)。


2. 生成测试数据


首先我们在文件夹里新建一个data.txt文档用以储存测试数据。


根据题意,y的范围为[1000,3000],m的范围为[1,12],x的范围为[0,9]。


我们知道可以调用库函数rand()随机产生一个int型整数,那么如何随机生成一个范围内的随机数呢,我们想到用模运算。


如果需要随机生成区间[x,y]内的数,可以用这样的语句来实现


printf("%d\n",x+rand()%(y-x+1));



生成后输出即可(见代码)


  1. #include <cstdio>
  2. #include <cstring>
  3. //*************** 对拍程序必备
  4. #include <ctime>
  5. #include <cstdlib>
  6. //***************
  7. #include <algorithm>
  8. using namespace std;
  9. typedef long long ll;
  10. const int maxn = 1005;
  11. const ll mod = 1e9+7;
  12. const int INF = 0x3f3f3f3f;
  13. const double eps = 1e-6;
  14. int main()
  15. {
  16. freopen("c://duipai//data.txt","w",stdout); //文件打印语句
  17. srand(time(NULL)); //必不可少
  18. int testcase=100; //测试数据组数,几百就差不多了
  19. while(testcase--)
  20. {
  21. int y=1000+rand()%(3000-1000+1);
  22. int m=1+rand()%(12-1+1);
  23. int x=0+rand()%(9-0+1);
  24. printf("%d %d %d\n",y,m,x);
  25. }
  26. return 0;
  27. }


【PS】


如果要生成小数,可用以下语句


printf("%.2f\n",rand()*1.0/100);


如果要生成字符串,每个字符可以通过先生成[0,25]的整数,然后再加上 'a'('A')得到。


3. 生成正确结果

先新建一个AC.txt,然后用一个一定正确的程序跑出结果并储存。



建议输出结果时加上读入数据,这样如果结果不一样可以很快知道是哪组测试数据出错。



4. 生成错误结果


先新建一个WA.txt,然后用WA的程序跑出结果并储存。




进行好上面几步后文件夹里就出现了三个txt文档,里面就是相应的数据了,当然你肉眼去找差异效率就比较低且易找错,所以我们继续操作。


5. 新建对拍文档

新建一个result.txt,用以进行对拍。


打开文档,输入以下语句并保存。



然后把文档的拓展名从txt改为bat,运行便能得到对拍结果啦。(如有问题见文末)




这样就比较清楚地可以看到问题出在哪组数据了。


如果比较后没有问题,则会返回找不到差异




【PS】如果你把文档的拓展名改了后,图标依旧没有改变,那么你需要进行进行以下操作。


  1. 打开文件资源管理器(我的电脑)。

  1. 点击左上角的“查看”,然后点击下拉菜单右侧的“选项”。

  1. 点击“查看”,然后在高级选项里找到“隐藏已知文件的拓展名”,取消勾选就可以了。





声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/72663
推荐阅读
相关标签
  

闽ICP备14008679号