如何造数据

当我们自己想出题时,就需要我们自己出数据啦qwq。

这里以出A+Bproblem的数据为例qwq。

模板代码:

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;

#define Rand() ((rand() << 15) + rand())

const int maxn = 1e5 + 40;
char a[maxn], b[maxn];

FILE *work(FILE *fp, int now) {
	fprintf(fp, "%d %d", Rand()%1000, Rand()%1000);
	return fp;
}

signed main() {
	srand(time(0));
	for(int i = 1; i <= 20; i++) {
		sprintf(a, "add%d.in", i);
		fclose(work(fopen(a, "w"), i));
		sprintf(b, "std.exe < add%d.in > add%d.out", i, i);
		system(b);
		printf("test #%d is ok now
", i);
	}
	return 0;
}

其中work为你生成数据的函数,一般main()函数里没有啥需要修改的qwq。

add为生成数据的文件名,std.exe是你标准程序运行后生成的exe文件,名字是可以修改的。

就假如你的标准程序名字是map,那么他编译运行后生成的exe文件就是map.exe。

你就把下面这一行:

sprintf(b, "std.exe < add%d.in > add%d.out", i, i);

改成这样就可以了:

sprintf(b, "map.exe < add%d.in > add%d.out", i, i);

同理add也是可以修改的,你可以改成这样:

sprintf(a, "qwq%d.in", i);
fclose(work(fopen(a, "w"), i));
sprintf(b, "std.exe < qwq%d.in > qwq%d.out", i, i);

一个地方修改了以后所有地方都要修改。

其中注意std.exe要和data.exe处在同一文件夹内,而且std一定要编译运行过即产生了exe文件!!

没啦qwq!

原文地址:https://www.cnblogs.com/Vanyun/p/13406612.html