1.数据创建
datamaker.cpp:
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
ll rget( ll a, ll b)
{
return (rand() % (b - a) ) + a;//产生范围为 [a, b]的随机数
}
int main()
{
srand( (unsigned int) time( NULL ));//以时间为随机种子
ll T = 100;
cout << T << endl;//T組样例
while(T--)
{
//数据生成部分具体根据题意写
}
return 0;
}
2.对拍脚本
#!/bin/bash
rm data
rm out1
rm out2
g++ datamaker.cpp -o datamaker
#运行datamaker,将测试数据存入data文件
./datamaker >> data
#将data文件中数据输入要测试的程序,再输出到文件out1、out2
cat data | ./Main >> out1
cat data | ./ans >> out2
#比较out1 out2
if diff out1 out2; then
printf "Accept\n"
else
echo WrongAnswer
fi
此脚本方便之处在于无需在源代码中添加freopen之类输入重定向即可实现数据输入输出,缺点暂时没发现。