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显得十分有必要 ...
随机推荐
- android开源项目之OTTO事件总线(二)官方demo解说
官方demo见 https://github.com/square/otto 注意自己该编译版本为2.3以上,默认的1.6不支持match_parent属性,导致布局文件出错. 另外需要手动添加an ...
- SetWindowPos,RegisterHotKey,GlobalAddAtom的用法
还以为SetWindowPos是给Frm的子框架间编写的,原来是给mainfrm写的,可以把你写的主窗口置顶,置底(看样子应该可以变成桌面了,还没试呢,才忙到现在...) 子窗口的遮挡可以使用窗口的样 ...
- LeetCode 389——找不同
1. 题目 2. 解答 2.1. 方法一 将 s 和 t 转化为 Python 的列表,然后遍历列表 s 的元素,将它们从列表 t 中删除,最后列表 t 中会余下一个元素,即为所求. class So ...
- Python 学习笔记之 Numpy 库——文件操作
1. 读写 txt 文件 a = list(range(0, 100)) a = np.array(a) # a.dtype = np.int64 np.savetxt("filename. ...
- debian8.2安装kubernetes
master上通过kubeadm安装Kubernetes 添加国内阿里源后安装kubeadm: deb https://mirrors.aliyun.com/kubernetes/apt/ kuber ...
- react错误总结
react-native 错误总结 The development server returned response error code: 500 in react-native https://b ...
- Pro Git - 笔记1
Getting Started About Version Control Local Version Control Systems Centralized Version Control Syst ...
- java多线程二之线程同步的三种方法
java多线程的难点是在:处理多个线程同步与并发运行时线程间的通信问题.java在处理线程同步时,常用方法有: 1.synchronized关键字. 2.Lock显示加锁. 3.信号量Se ...
- 关于org.springframework.web.filter.CharacterEncodingFilter的学习
介绍 org.springframework.web.filter.CharacterEncodingFilter 这是一个过滤器,是Spring在web请求中定义request和response的编 ...
- 浅析Python中的main函数
Python作为一门较为灵活的解释型脚本语言,其中定义的main()函数只有当该Python脚本直接作为执行程序时才会执行: 当该python脚本被作为模块(module)引入(import)时,其中 ...