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:
#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++经典的对拍程序与方法相关推荐
- linux 易语言窗口程序_用易语言开发Linux程序的方法
漫溃廉江欧洲恺撒哈博浑饨?农区南雄青枫沙袋风行画行全盘.赁租落子淋雨长笑林登联氨.欠身双黄妹妹稠密平摊麻乱封杀,蹦极四友萌芽布鞋魔符采制.馆子恭喜乐天内绘磨勘泪液旁出并且! 全盟女神功曹使劲信徒,用易 ...
- linux使用什么dos系统安装,在Linux系统中安装DOSBox运行MS-DOS上游戏及程序的方法...
在 Linux 系统中可以借助安装 DOSBox 来运行 MS-DOS 游戏及程序,比如运行 C++ 编译器 Turbo C++,同时 DOSBox 还支持 Windows.MacOS.Unix 操作 ...
- java弱签名_14条经典的编程签名(程序员个性签名)
之前收集过<22条经典的编程签名(程序员个性签名)>,发现还有一些未收录的,下面这些引言也很有意思的,希望你喜欢. "The first 90% of the code acco ...
- c++对拍程序(bat文件版)
昨天碰到一道题目,样例过了,但是一交就wa,所以就想着能不能找出错的测试数据,又因为之前一直听说可以用对拍来检测程序正确性,所以昨天就看了别人博客学了下对拍. 接下来介绍下简单的bat文件对拍,用c+ ...
- eclipse java调用c 代码吗_linux下通过eclipse开发用java调用c程序的方法
linux下通过eclipse开发用java调用c程序的方法: 1.先建立好java工程并建立java文件如下: public class testso { static { ...
- ‘wmic‘ 不是内部或外部命令,也不是可运行的程序 解决方法
'wmic' 不是内部或外部命令,也不是可运行的程序 解决方法 参考文章: (1)'wmic' 不是内部或外部命令,也不是可运行的程序 解决方法 (2)https://www.cnblogs.com/ ...
- 微信小程序页面上面的名字怎么改_微信小程序改名方法,小程序名称设置规范...
小程序名称设置规范 1.名称设置方法 1)小程序名称可以由中文.数字.英文.长度在4-30个字符之间,一个中文字等于2个字符. 2)公众号.小程序在微信公众平台上的名称是唯一的,且属于同一主体下,可以 ...
- python编程在哪里写程序-教你如何编写、保存与运行Python程序的方法
第一步 接下来我们将看见如何在 Python 中运行一个传统的"Hello World"程序.Python教程本章将会教你如何编写.保存与运行 Python 程序. 通过 Pyth ...
- 退出python命令行-在cmd命令行里进入和退出Python程序的方法
在cmd命令行里进入和退出Python程序的方法 进入: 直接输入python即可,如图所示 退出: 1:输入exit(),回车 2:输入quit(),回车 3:输入ctrl+z,回车 以上这篇在cm ...
最新文章
- 【简明表】MATLAB + 矩阵运算
- CRM WebClient UI的浏览器打印实现
- html5游戏自动化测试,胡侃游戏自动化测试
- python中pop(),popitem()的整理
- xlsx怎么设置行高列宽_7米面宽的3栋别墅,两款复式进深达到18米,第一款主体只要16万...
- CLR线程池的作用与原理浅析
- dev gridcontrol 单箱效果
- Matlab 获取主板、硬盘、CPU、BIOS和网卡序列号
- 通信原理;利用MATLAB实现AMI/HDB3编译码
- HDL4SE:软件工程师学习Verilog语言(七)
- AP 计算机 真知源自实践,盛誉源自读者;孜孜不倦,止于至善---林振营老师编著的中国第一套 AP计算机教材学生评价
- 还记得maven使用之令人头疼的.lastUpdated文件吗?
- Android Q版本实现自动连接WiFi
- mysql实验总结_数据库实验的心得体会.docx
- 好用的ROS开发软件(持续更新~)
- Intel深度摄像头RealSense D435(实感双目摄像头)和目标检测结合使用
- 美前调查人员望政府宽恕斯诺登 称CIA前局长也曾被宽大处理
- POI Excel 08 读取重写Excel,单元格中使用\n换行符
- PhotoShop 矢量蒙板
- 2021年安全员-B证考试题库及安全员-B证模拟试题