一、对拍背景

  对拍是一种十分实用的检查程序正确性的手段,在比赛时广泛使用

  我们一般对拍两个程序,一个是自己不确定正确性的高级算法,另一个一般是能保证正正确的暴力算法

  我们采用随机产生数据,然后分别用这两个程序读入数据,最后比较两程序答案的异同来进行验证

二、程序准备

  首先我们准备两个程序

  一般一个是认为正确或较高部分分的解法,另一个是低分的暴力解法

  我们以a+b为例,一个用 C 输入,一个用 C++ 输入

程序一:

 1 #include<iostream>
2 #include<cstdio>
3 using namespace std;
4
5 int main()
6 {
7 freopen("ab.in","r",stdin);
8 freopen("ab1.out","w",stdout);
9 int a,b;
10 cin>>a>>b;
11 cout<<a+b<<endl;
12 return 0;
13 }

程序二:

 1 #include<cstdio>
2 using namespace std;
3
4 int main()
5 {
6 int a,b;
7 freopen("ab.in","r",stdin);
8 freopen("ab2.out","w",stdout);
9 scanf("%d%d",&a,&b);
10 printf("%d\n",a+b);
11 return 0;
12 }

三、制作数据产生程序

  我们采用 C++ 来制作随机数据

  将数据输出到程序的输入文件里

  重置随机种子 srand(time(NULL));

  使用 rand() 函数生成随机数,后面的取模为数据范围

    如 x=rand()%100;   产生一个 0~99 的整数放入变量 x

  具体数据生成根据题目具体而定

这里给出A+B的数据制作程序:

 1 #include<cstdio>
2 #include<cstdlib>
3 #include<ctime>
4 using namespace std;
5
6 int main()
7 {
8 freopen("ab.in","w",stdout);
9 int x,y;
10 srand(time(NULL));
11 x=rand()%1000000;
12 y=rand()%1000000;
13 printf("%d %d\n",x,y);
14 return 0;
15 }

四、对拍程序

  我们仍采用 C++ 程序来进行对拍,具体用 system 函数实现

  system("./***");  运行程序,其中***代表可执行文件名

  system("diff *** ***");  比较两个文件,我们在对拍时比较两个不同程序的输出文件

  若两个文件内容不相同则返回 真true ,相同则返回 假false ,这与C++中逻辑是相反的

 1 #include<cstdio>
2 #include<cstdlib>
3 using namespace std;
4
5 int main()
6 {
7 int i;
8 for (i=1;i<=1000;i++)
9 {
10 system("./make");
11 system("./ab1");
12 system("./ab2");
13 printf("%d : ",i);
14 if (system("diff ab1.out ab2.out"))
15 {
16 printf("WA\n");
17 return 0;
18 }
19 else printf("AC\n");
20 }
21 return 0;
22 }

版权所有,转载请联系作者,违者必究

联系方式:http://www.cnblogs.com/hadilo/p/5932395.html

Linux下程序对拍_C++ (付费编号1001)的更多相关文章

  1. Linux下程序对拍_C++

    此博客需要付费才阅读,因为该博客实用性十分强,且十分容易理解 若需购买请联系博主,联系方式戳这 http://www.cnblogs.com/hadilo/p/5932395.html 主要介绍如何在 ...

  2. Linux下程序的机器级表示学习心得

    Linux下程序的机器级表示学习心得 上周学习完Linux程序的机器级表示后,对于其中有些还是掌握的不太透彻.对于老师提出的关于本章一些细节的问题还是有不会,所以又重新温习了一下上周的学习内容,以下为 ...

  3. windows和linux下如何对拍

    对拍是各种计算机考试检查时必备工具,实际上十分强大,只要你的暴力没有写错就没有问题. 对拍的意思:(怎么有点语文课的意思雾) 对:看见'对'就可以知道有两个. 拍:就是把两个程序结果拍在一起,对照(有 ...

  4. 制作Linux下程序安装包——使用脚本打包bin、run等安装包

    制作简单的安装包的时候可以简单的用cat命令连接两个文件,然后头部是脚本文件,执行的时候把下面的文件分解出来就行了.一般这个后部分的文件是个压缩 包,那样,就能够打包很多文件了,在脚本中解压出来即可. ...

  5. Linux下程序崩溃,ulimit,coredump,gdbserver

    操作系统:Ubuntu10.04 前言:    在程序崩溃后,如何快速定位问题.    以下方法适用于开发调试阶段,不太适用成品.    本文着眼于嵌入式,PC方面更简单.    核心:gdbserv ...

  6. [转] Linux下程序的加载、运行和终止流程

    TAG: linux, main, _start DATE: 2013-08-08 原文地址: http://blog.csdn.net/tigerscorpio/article/details/62 ...

  7. linux下程序JDBC连接不到mysql数据库

    今天在linux下部署一个 JavaEE项目的时候总是连接不到Mysql数据库,检查之后发现连接池的配置确定是对的,进入linux服务器之后以mysql -uname -ppassword连接总是报A ...

  8. Linux下程序下载

    每个开发板/PC机都有硬盘(ROM,read only memory,只读存储器)和运行内存(RAM,random access memory,随机存取存储器).其中Nand/Nor flash相当于 ...

  9. linux下程序启动后后台运行实现

    关于linux下的程序运行很简单,将源码编译成二进制(假设为proram)文件后直接在命令行运行即可,root#./program如果需要后台运行,即不占用当前终端,这在嵌入式linux显得十分有必要 ...

随机推荐

  1. JVM运行内存分配和回收

    本文来自网易云社区 作者:吕宗胜 Java语言与C语言相比,最大的特点是编程人员无需过多的关心Java的内存分配和回收,因为所有这一切,Java的虚拟机都帮我们实现了.JVM的内存管理,大大降低了开发 ...

  2. android service笔记

    1.service 默认在主线程运行,所以不能在service中直接做访问网络,操作文件等耗时操作,要另外开启线程 2.通过startservice开启的服务,一旦服务开启,这个服务和开启他的调用者之 ...

  3. cachel-control

    nodejs: res.set('Cache-Control', 'public, max-age=31557600'); express全局设置:       app.use(express.sta ...

  4. 【APUE】Chapter5 Standard I/O Library

    5.1 Introduction 这章介绍的standard I/O都是ISOC标准的.用这些standard I/O可以不用考虑一些buffer allocation.I/O optimal-siz ...

  5. Python进程、线程、协程及IO多路复用

    详情戳击下方链接 Python之进程.线程.协程 python之IO多路复用

  6. 软件工程项目组Z.XML会议记录 2013/11/20

    软件工程项目组Z.XML会议记录 [例会时间]2013年11月20日星期三21:00-22:00 [例会形式]小组讨论 [例会地点]学生公寓3号楼会客厅 [例会主持]李孟 [会议记录]李孟 会议整体流 ...

  7. android扁平化ProgressBar--progressWheel

    ProgressWheel是git是一个开源项目,为开发者提供一个扁平化的ProgressBar,并可对其进行深度定制   1,将ProgressWheel的源码拷贝到项目中 public class ...

  8. 小C的记事本(栈记录字符串)

    链接:https://www.nowcoder.com/acm/contest/122/D来源:牛客网 题目描述 小C最近学会了java小程序的开发,他很开心,于是想做一个简单的记事本程序练练手. 他 ...

  9. servlet 接受和回复向服务器对客户端发起得请求

    servlet 接受和回复向服务器对客户端发起得请求

  10. javascript中window.location.search方法简介

    window.location.search方法是截取当前url中"?"后面的字符串,示例如下: 例如:http://www.firefoxchina.cn/?ntab截取后的字符 ...