对拍
作者:互联网
新生赛D题贪心一直WA而又debug不出来,只能用对拍拍一下子
对拍的基本思路:有正确程序/小范围正确程序right.cpp, 你的WA程序wrong.cpp, 随机数生成测试的程序test.cpp三个程序
test.cpp:
srand(time(0)) 首先选定时间作为随机数种子
然后用随机数生成序列
#include <bits/stdc++.h>
using namespace std;
int main () {
srand(time(0));
printf("10\n");
printf("%d 0\n", rand() * rand() % 100000 + 1) ;
printf("0 %d\n", rand() * rand() % 100000 + 1) ;
for (int i = 1; i <= 8; i ++) {
printf("%d %d\n", rand() * rand() % 100000 + 1, rand() * rand() % 100000 + 1);
}
return 0;
}
RAND_MAX至少为32767,如果担心不够大可以再乘一个。
然后把三个程序放到同一个文件夹里面,新建三个txt,
建立一个txt,内容如下:
g++ test.cpp -o test -g
g++ right.cpp -o right -g
g++ wrong.cpp -o wrong-g
:loop
test.exe >1.txt
right.exe<1.txt>2.txt
wrong.exe<1.txt>3.txt
fc 2.txt 3.txt
if not errorlevel 1 goto loop
pause
goto loop
前三行是对程序的编译
后面是循环比较right.cpp , wrong.cpp的输出2.txt,3.txt, 如果没有区别就会继续循环,否则就会停止,停止时就可以观察比较结果的不同。
把这个txt文件拓展名改为.bat脚本文件,就可以运行了。
标签:,rand,right,test,wrong,cpp,txt 来源: https://www.cnblogs.com/misasteria/p/16243939.html