Mac OS下编写对拍程序
介绍
对拍是信息学竞赛中重要的技巧,它通过一个效率低下但正确率可以保证的程序,利用庞大的随机生成数据来验证我们的高级算法程序。对拍最大的优势在于可以通过人力所不能及的速度和数量达到验证的效果。下面我们来看一下简单的对拍程序该如何编写
举例
给定一个自然数n (n<=50000),求解1+2+3+...+n的和。
test1.cpp //算法程序1
test2.cpp //算法程序2
data.cpp //数据生成器
compare.cpp //比较程序
说明
test1.cpp和test2.cpp都是我们所写的算法程序,其中test1.cpp使用朴素的for循环求解,代码如下:
#include<cstdio> int main()
{
freopen("test.in" ,"r",stdin);
freopen("test1.out","w",stdout); int n;
long long ans=;
scanf("%d",&n);
for(int i=;i<=n;i++) ans+=i;
printf("%lld\n",ans); return ;
}
test1.cpp
test2.cpp利用公式计算,代码如下:
#include<cstdio> int main()
{
freopen("test.in" ,"r",stdin);
freopen("test2.out","w",stdout); int n;
scanf("%d",&n);
//printf("%lld\n",(long long) (n+1)*n/2);
printf("%d\n",(n+)*n/);
return ;
}
test2.cpp
data.cpp是我们写的数据生成器
#include<cstdio>
#include<ctime>
#include<cstdlib>
using namespace std; int main()
{
freopen("test.in","w",stdout);
srand(time());
printf("%d",abs(rand()*rand()%));
return ;
}
data.cpp
而compare.cpp则是对拍程序的主体
#include<cstdio>
#include<cstdlib> int main()
{
int tmp=;
for(int i=;i<=;i++)
{
system("./data");
system("./test1");
system("./test2"); if(i/>tmp) {printf("-- %d --\n",i);tmp=i/;}
if(system("diff test1.out test2.out"))
{
printf("wrong in --> %d \n",i);
break;
}
}
return ;
}
compare.cpp
将四个文件编译后的可执行文件放到一个文件夹里,用cd进入这个文件夹,输入
./compare
即可运行。
Tips
1.“./”表示当前目录下,如果在终端中输入的是./compare 的话就已经默认在当前目录里了,程序里不写“./”也是可行的。
2.diff函数在得到不同的比较值时会返回“1”。
3.mac os下对比是没有提示的,知道有不同的结果出现时才有所提示。所以建议自己写的时候附带提示功能。
Mac OS下编写对拍程序的更多相关文章
- mac os 下搭建android开发环境
mac os 下搭建android开发环境 周银辉 mac os 下搭建android环境比较方便, 如下几个步骤: 1,安装jdk 先搞清楚自己是否已经安装,在命令行下:java -version, ...
- Mac os 下的文件权限管理
Mac os 下的文件权限管理 命令 ls -l -A 结果 -rw-r--r-- 1 user admin 2326156 4 12 15:24 adb 横线代表空许可.r代表只读,w代表写,x代表 ...
- mac os 下的sublime --- 快捷键
mac os 下的sublime ---列模式 http://www.oschina.net/question/249672_161413 触控板也可以的:左手同时按住 Option 和触控板左下角 ...
- MAC OS下免费下载YouTube
YouTube上有很多不错的视频,你感兴趣的视频除了可以加入自己播放列表之外,还可以将其下载到本地收藏起来.推荐这款软件“Xilisoft Download YouTube Video for Mac ...
- YII 框架在 MAC OS下 连接数据库失败 提示 DB connection: SQLSTATE[HY000] [2002]
作者:zccst CDbConnection failed to open the DB connection: SQLSTATE[HY000] [2002] No such file or dire ...
- wget Mac OS 下安装
wget是一个从网络上自动下载文件的自由工具,支持通过HTTP.HTTPS.FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理. 下面介绍如何在Mac OS 下安装Wget 下载最新版的 ...
- [转]Linux/Windows下脚本对拍程序
[新]简单写法 (转载自:https://blog.csdn.net/ylsoi/article/details/79824655) 要求:文件输入输出,且输入输出文件需要对应 Linux: #inc ...
- Mac OS下 Redis2.6.14部署记录
Mac OS下 Redis2.6.14部署记录 部署一个Redis作为缓存进行验证,记录部署过程. 官网:http://redis.io/,目前最近稳定版为2.6.14 解压,进入目录.按照READ ...
- Mac os 下 python爬虫相关的库和软件的安装
由于最近正在放暑假,所以就自己开始学习python中有关爬虫的技术,因为发现其中需要安装许多库与软件所以就在这里记录一下以避免大家在安装时遇到一些不必要的坑. 一. 相关软件的安装: 1. h ...
随机推荐
- Python-面向对象编程
概述: 面向过程:根据业务逻辑从上到下写代码. 函数式:将某功能代码封装到函数中,以后便无需重复编写,进调用函数即可. 面向对象:对函数进行分类和封装,让开发“更快更好更强” 创建类和对象 面向对象编 ...
- Windows下安装Redmine
参考链接:http://www.cnblogs.com/afarmer/archive/2011/08/06/2129126.html 最新教程:http://www.myexception.cn/w ...
- JAVA 根据数据库表内容生产树结构JSON数据
1.利用场景 组织机构树,通常会有组织机构表,其中有code(代码),pcode(上级代码),name(组织名称)等字段 2.构造数据(以下数据并不是组织机构数据,而纯属本人胡编乱造的数据) List ...
- 机器学习算法 Python & R速查表
- .NET面试题解析(07)-多线程编程与线程同步 (转)
http://www.cnblogs.com/anding/p/5301754.html 系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 关于线程的知识点其实 ...
- IOS开发之—— model最原始的封装,MJExtension加入工程(后续model都继承于它)
DMBasicDataModel.h #import <Foundation/Foundation.h> @interface DMBasicDataModel : NSObject - ...
- iOS开发之—— XCODE真机调试设备连接一直忙碌如何处理!(真机调试各种错误提示解决)
真机调试,想连接真机调试代码可是连上设备后就一直转圈, 在Divice里面一直提示“iphone名称” is busy: Processing symbol files Xcode will cont ...
- 关于git托管的一些心得
GIT托管的一些心得 熟练运用软件进行GIT托管的好处 在上一周的学习中,我提出来了一个疑惑,就是为什么一定要用软件托管而不选择web托管,在这周的学习中,我通过实践体会到了一些运用软件托管的好处: ...
- PRML读书会第四章 Linear Models for Classification(贝叶斯marginalization、Fisher线性判别、感知机、概率生成和判别模型、逻辑回归)
主讲人 planktonli planktonli(1027753147) 19:52:28 现在我们就开始讲第四章,第四章的内容是关于 线性分类模型,主要内容有四点:1) Fisher准则的分类,以 ...
- 浅谈JS面向对象之创建对象
hello,everybody,今天要探讨的问题是JS面向对象,其实面向对象呢呢,一般是在大型项目上会采用,不过了解它对我们理解JS语言有很大的意义. 首先什么是面向对象编程(oop),就是用对象的思 ...