对拍是自我检验程序可行性一个常用途径,掌握对拍方法是每一个竞赛生的最基本的要求。我重点在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:

#include<cstdio>
#include<ctime>
#include<cstdlib>
int main(){for(int i=1;i<=S;i++){system("Rand.exe");double start=clock();system("True.exe");double end=clock();system("BF.exe");if(system("fc TrueAns.out BFAns.out")){puts("Wrong Answer!");return 0;}else{printf("Accepted! 测试点 %d  用时:%lf",i,end-start);}}return 0;
}

这里要强调几点:

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)

#include<iostream>
#include<cstring>   //True.cpp
//Else
int main(){freopen("Data.in","r",stdin);freopen("TrueAns","w",stdout);//Your codefclose(stdin);fclose(stdout);return 0;
}

Code(BF.cpp) 

#include<iostream>
#include<cstring>
//Else
int main(){freopen("Data.in","r",stdin);freopen("BFAns","w",stdout);//Your codefclose(stdin);fclose(stdout);return 0;
}

End~~~

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

C++经典的对拍程序与方法相关推荐

  1. linux 易语言窗口程序_用易语言开发Linux程序的方法

    漫溃廉江欧洲恺撒哈博浑饨?农区南雄青枫沙袋风行画行全盘.赁租落子淋雨长笑林登联氨.欠身双黄妹妹稠密平摊麻乱封杀,蹦极四友萌芽布鞋魔符采制.馆子恭喜乐天内绘磨勘泪液旁出并且! 全盟女神功曹使劲信徒,用易 ...

  2. linux使用什么dos系统安装,在Linux系统中安装DOSBox运行MS-DOS上游戏及程序的方法...

    在 Linux 系统中可以借助安装 DOSBox 来运行 MS-DOS 游戏及程序,比如运行 C++ 编译器 Turbo C++,同时 DOSBox 还支持 Windows.MacOS.Unix 操作 ...

  3. java弱签名_14条经典的编程签名(程序员个性签名)

    之前收集过<22条经典的编程签名(程序员个性签名)>,发现还有一些未收录的,下面这些引言也很有意思的,希望你喜欢. "The first 90% of the code acco ...

  4. c++对拍程序(bat文件版)

    昨天碰到一道题目,样例过了,但是一交就wa,所以就想着能不能找出错的测试数据,又因为之前一直听说可以用对拍来检测程序正确性,所以昨天就看了别人博客学了下对拍. 接下来介绍下简单的bat文件对拍,用c+ ...

  5. eclipse java调用c 代码吗_linux下通过eclipse开发用java调用c程序的方法

    linux下通过eclipse开发用java调用c程序的方法: 1.先建立好java工程并建立java文件如下: public class testso {     static {         ...

  6. ‘wmic‘ 不是内部或外部命令,也不是可运行的程序 解决方法

    'wmic' 不是内部或外部命令,也不是可运行的程序 解决方法 参考文章: (1)'wmic' 不是内部或外部命令,也不是可运行的程序 解决方法 (2)https://www.cnblogs.com/ ...

  7. 微信小程序页面上面的名字怎么改_微信小程序改名方法,小程序名称设置规范...

    小程序名称设置规范 1.名称设置方法 1)小程序名称可以由中文.数字.英文.长度在4-30个字符之间,一个中文字等于2个字符. 2)公众号.小程序在微信公众平台上的名称是唯一的,且属于同一主体下,可以 ...

  8. python编程在哪里写程序-教你如何编写、保存与运行Python程序的方法

    第一步 接下来我们将看见如何在 Python 中运行一个传统的"Hello World"程序.Python教程本章将会教你如何编写.保存与运行 Python 程序. 通过 Pyth ...

  9. 退出python命令行-在cmd命令行里进入和退出Python程序的方法

    在cmd命令行里进入和退出Python程序的方法 进入: 直接输入python即可,如图所示 退出: 1:输入exit(),回车 2:输入quit(),回车 3:输入ctrl+z,回车 以上这篇在cm ...

最新文章

  1. 【简明表】MATLAB + 矩阵运算
  2. CRM WebClient UI的浏览器打印实现
  3. html5游戏自动化测试,胡侃游戏自动化测试
  4. python中pop(),popitem()的整理
  5. xlsx怎么设置行高列宽_7米面宽的3栋别墅,两款复式进深达到18米,第一款主体只要16万...
  6. CLR线程池的作用与原理浅析
  7. dev gridcontrol 单箱效果
  8. Matlab 获取主板、硬盘、CPU、BIOS和网卡序列号
  9. 通信原理;利用MATLAB实现AMI/HDB3编译码
  10. HDL4SE:软件工程师学习Verilog语言(七)
  11. AP 计算机 真知源自实践,盛誉源自读者;孜孜不倦,止于至善---林振营老师编著的中国第一套 AP计算机教材学生评价
  12. 还记得maven使用之令人头疼的.lastUpdated文件吗?
  13. Android Q版本实现自动连接WiFi
  14. mysql实验总结_数据库实验的心得体会.docx
  15. 好用的ROS开发软件(持续更新~)
  16. Intel深度摄像头RealSense D435(实感双目摄像头)和目标检测结合使用
  17. 美前调查人员望政府宽恕斯诺登 称CIA前局长也曾被宽大处理
  18. POI Excel 08 读取重写Excel,单元格中使用\n换行符
  19. PhotoShop 矢量蒙板
  20. 2021年安全员-B证考试题库及安全员-B证模拟试题

热门文章

  1. 高校BBS爆笑之无敌终结版
  2. 2.1 二分类(Binary Classification)
  3. 虾扑 ERP 店铺 管理系统 一键式上新
  4. mac输入拼音的方法
  5. 05-如何全部清除redis缓存数据库中的缓存数据
  6. 创建基于Webpack的Vue.js项目
  7. 安利:华为鲲鹏920云主机部署Nginx服务器一键拉起自动化脚本
  8. ubuntu下nginx配置
  9. python创建二维列表
  10. x86_64(intel64、amd64)和ARM64的区别以及发展