当前位置:   article > 正文

C++经典的对拍程序与方法_c++对拍

c++对拍

对拍是自我检验程序可行性一个常用途径,掌握对拍方法是每一个竞赛生的最基本的要求。我重点在Windows系统中介绍方法。


对于一个问题,我们想要验证正解的正确性,我们可以:

1.首先我们可以编写一个靠谱的朴素算法,名为BF.cpp,编译运行生成BF.exe

2.然后我们用把自己的正解编写完成,名为Ture.cpp,编译运行生成True.exe

3.我们要编写一个生成随机数据的程序,名为Rand.cpp,编译运行生成Rand.exe

4.在本级目录创建一个名为Data.in的文件,用来让随机数据输出到里面、

5.然后我们再分别创建名为TrueAns.out 和 BF.out的文件,用来让正解和朴素算出的答案输出到里面。

6.再创建一个名为Process.cpp的C++项目,在里面分别调用我们以上创建好的东西

我们先上Process的代码:

Code:

  1. #include<cstdio>
  2. #include<ctime>
  3. #include<cstdlib>
  4. int main(){
  5. for(int i=1;i<=S;i++){
  6. system("Rand.exe");
  7. double start=clock();
  8. system("True.exe");
  9. double end=clock();
  10. system("BF.exe");
  11. if(system("fc TrueAns.out BFAns.out")){
  12. puts("Wrong Answer!");
  13. return 0;
  14. }
  15. else{
  16. printf("Accepted! 测试点 %d 用时:%lf",i,end-start);
  17. }
  18. }
  19. return 0;
  20. }

这里要强调几点:

1.fc是dos系统中的比较指令,能够比较指定两个文件,如果相同就返回0,不相同就返回1。当然我们也可以不需要if语句,它自动会返回比较的结果!

2.system函数的原型在<cstdlib>(<stdlib.h>)头文件里面

3.计算所用的时间,可以时间clock()函数,分别记录时间Start,End,相减即可得出答案

函数原型在<ctime>(<time.h>)头文件中,返回类型为double。

4.BF.cpp,True.cpp记得要freopen,来读写文件,不要输到控制台上,freopen()函数原型在<cstring>头文件中,打开了尽量要关闭,用fclose函数,了解更多freopen的内容,请点击:

freopen函数的详解与应用http://xn--93t021e

5.上述名称都是举例的,可以自定义,但一定要对应

6.由于所有文件都在同一级目录,所以索引就直接写名称加扩展名就可,但一般情况下都是要加上路径的 如:C:\\Program\Rand.exe,而不是Rand.exe

下面我列举了BF.cpp True.cpp的伪代码模板:

Code(True.cpp)

  1. #include<iostream>
  2. #include<cstring> //True.cpp
  3. //Else
  4. int main(){
  5. freopen("Data.in","r",stdin);
  6. freopen("TrueAns","w",stdout);
  7. //Your code
  8. fclose(stdin);
  9. fclose(stdout);
  10. return 0;
  11. }

Code(BF.cpp) 

  1. #include<iostream>
  2. #include<cstring>
  3. //Else
  4. int main(){
  5. freopen("Data.in","r",stdin);
  6. freopen("BFAns","w",stdout);
  7. //Your code
  8. fclose(stdin);
  9. fclose(stdout);
  10. return 0;
  11. }

End~~~

如有不懂的地方,欢迎评论,谢谢大家支持!

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

闽ICP备14008679号