Linux下程序对拍_C++ (付费编号1001)
一、对拍背景
对拍是一种十分实用的检查程序正确性的手段,在比赛时广泛使用
我们一般对拍两个程序,一个是自己不确定正确性的高级算法,另一个一般是能保证正正确的暴力算法
我们采用随机产生数据,然后分别用这两个程序读入数据,最后比较两程序答案的异同来进行验证
二、程序准备
首先我们准备两个程序
一般一个是认为正确或较高部分分的解法,另一个是低分的暴力解法
我们以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)的更多相关文章
- Linux下程序对拍_C++
此博客需要付费才阅读,因为该博客实用性十分强,且十分容易理解 若需购买请联系博主,联系方式戳这 http://www.cnblogs.com/hadilo/p/5932395.html 主要介绍如何在 ...
- Linux下程序的机器级表示学习心得
Linux下程序的机器级表示学习心得 上周学习完Linux程序的机器级表示后,对于其中有些还是掌握的不太透彻.对于老师提出的关于本章一些细节的问题还是有不会,所以又重新温习了一下上周的学习内容,以下为 ...
- windows和linux下如何对拍
对拍是各种计算机考试检查时必备工具,实际上十分强大,只要你的暴力没有写错就没有问题. 对拍的意思:(怎么有点语文课的意思雾) 对:看见'对'就可以知道有两个. 拍:就是把两个程序结果拍在一起,对照(有 ...
- 制作Linux下程序安装包——使用脚本打包bin、run等安装包
制作简单的安装包的时候可以简单的用cat命令连接两个文件,然后头部是脚本文件,执行的时候把下面的文件分解出来就行了.一般这个后部分的文件是个压缩 包,那样,就能够打包很多文件了,在脚本中解压出来即可. ...
- Linux下程序崩溃,ulimit,coredump,gdbserver
操作系统:Ubuntu10.04 前言: 在程序崩溃后,如何快速定位问题. 以下方法适用于开发调试阶段,不太适用成品. 本文着眼于嵌入式,PC方面更简单. 核心:gdbserv ...
- [转] Linux下程序的加载、运行和终止流程
TAG: linux, main, _start DATE: 2013-08-08 原文地址: http://blog.csdn.net/tigerscorpio/article/details/62 ...
- linux下程序JDBC连接不到mysql数据库
今天在linux下部署一个 JavaEE项目的时候总是连接不到Mysql数据库,检查之后发现连接池的配置确定是对的,进入linux服务器之后以mysql -uname -ppassword连接总是报A ...
- Linux下程序下载
每个开发板/PC机都有硬盘(ROM,read only memory,只读存储器)和运行内存(RAM,random access memory,随机存取存储器).其中Nand/Nor flash相当于 ...
- linux下程序启动后后台运行实现
关于linux下的程序运行很简单,将源码编译成二进制(假设为proram)文件后直接在命令行运行即可,root#./program如果需要后台运行,即不占用当前终端,这在嵌入式linux显得十分有必要 ...
随机推荐
- C++学习001-注释
天了噜,感觉自己最近好堕落啊, 在等待项目任务书到来的时候,在来好好学习学习C++ 今天来学习一下C++的注释风格 编写环境 Qt 5.7 1. //注释 // ui->setupUi(thi ...
- python+UIAutomation+libary
#! /usr/bin/env python#Author: XIE TIAN# -*- coding:utf8 -*-from __future__ import unicode_literalsi ...
- 第七篇Python基本数据类型之数字&字符串&布尔值
数字 写在最前,必须要会的:int() 整型 Python3里无论数字多长都用int表示,Python2里有int和Long表示,Long表示长整型 有关数字的常用方法,方法调用后面都必须带括号() ...
- CSS3 : box-shadow
box-shadow 用于设置边框阴影,语法: box-shadow: h-shadow v-shadow blur spread color inset; -moz-box-shadow: h-sh ...
- python终极篇 --- django 初识
1. 下载: 命令行: pip install django==1.11.15 pip install -i 源 django==1.11.15 pycharm settings 解释器 点+号 输入 ...
- 使用JDK的keytool生成Android签名证书
生成证书:keytool -genkey -alias [yourapp] -keyalg RSA -validity 20000 -keystore [yourapp].keystore 输入key ...
- C - 安装雷达
C - 安装雷达 Time Limit: 1000/1000MS (C++/Others) Memory Limit: 65536/65536KB (C++/Others) Problem Descr ...
- hdu2421(数学,因式分解素数筛)
Xiaoming has just come up with a new way for encryption, by calculating the key from a publicly view ...
- 【PHP】- Apache设置
Apache配置 1.首先新建一个自己的amp目录(模仿wampserver安装目录),以后的apache,mysql,php都放在此目录下. 2.下载apache 根据自己的系统下载相应的压缩包,我 ...
- [C/C++] C++中new的语法规则
int *x = new int; //开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针) ); //开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址 ...