Linux 下对拍教程

1. 需要准备的文件:

数据生成器:

数据生成器就是按照题目的输入格式自动随机生成一组数据的程序。假如我们要生成一组这样的数据:
$ n \qquad len $
$ a_1 \qquad a_2 \qquad a_3 \qquad a_4 \quad \dots \quad a_n $
其中上面两行是两个整数 $ n $ ,$ len $,下面是 $ n $ 个数组 $ a $ 中的整数 $ a_i $ ,那么我们的数据生成器就可以这么写:

#include <iostream>
#include <cstdio>
#include <ctime>
#include <algorithm>

using namespace std;

int main(){
    srand(time(NULL));
    int n=rand()%(15)+1;
    int len=rand()%(n)+1;
    printf("%d %d\n",n,len);
    for(register int i=1;i<=n;i++) printf("%d ",rand()%100);
    printf("\n");
    return 0;
}
标程 && 自己的程序:

这个标程你随便去网上找个就可以了,或者自己写一个能够保证正确的暴力就可以了。然后在就是自己写的需要判断正确性的程序。

对排器:

对拍器就是一个脚本程序。这个脚本的工作就是先编译我们之前的程序,之后我们再不断用while循环生成一组数据,在用这个数据输入进程序,在用两个文件保存运行答案。之后我们再用diff来判断两个输出的文件是否一致。如果输出文件不一致,那么我们就退出对拍。再用这个数据去调试程序。

下面是对拍器的代码:

#!/bin/bash
# 下面三行是编译命令
g++ date.cpp -o date
g++ main.cpp -o main
g++ std.cpp -o std
while true; do
    ./date > input.in #将生成的数据保存进input.in文件里
    # 接下来两行就是将input.in文件输入进程序里面,之后再将程序输出的内容保存进两个文件std.out与output.out里
    ./std < input.in > std.out 
    ./main < input.in > output.out
    if diff std.out output.out; then # 对比两个文件
        printf "AC\n"
    else 
        printf "Wa\n"
        exit 0 # 如果两个程序输出内容不同就退出
    fi
done

2.开始对拍

首先我们打开终端输入sh 对拍器名字.sh。然后回车后就开始对拍了。如果出了什么错误可以在终端中输入chmod 777 对拍器名字.sh 就可以让对拍器有可执行程序权限。
1440436-20180910221847791-1117309283.gif

转载于:https://www.cnblogs.com/lixiao189/p/9623539.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值