给OJ题目出数据

mac2026-09-30  7

出数据就是利用随机数自己写一个按输入样例的格式产生数据的程序

当然我们需要用到产生随机数的函数和文件操作,oj判定只看你的输出答案和标准答案是否一致。

我们来举个栗子:

比如

A + B Problem

描述

Calculate a+b

输入

多组输入

Two integer a,b

输出

Output a+b

输入样例 1

1 2 2 3

输出样例 1

3 5

产生输入样例

我们的输入文件里的数据就和输入样例格式一样

#include <bits/stdc++.h> using namespace std; int main() { srand(time(0));//设置时间种子 freopen("test.in","w",stdout);//设置 cout printf 这些输出流都输出到 test.in里面去 int a,b; int len=100; for(int i=0;i<len;i++)//多组数据 如果不用多组数据把循环去掉就可以了,len表示有几组数据 { a=rand()%100000,b=rand()%100000;//rand()产生随机数取余表示数据的范围为0-100000 printf("%d %d\n",a,b);//输出到test.in中 一定记得换行 } return 0; }

注意点和技巧:

1.一定记得设置时间种子和换行

2.如果数据要求不重复,可以用vis数组来标记判断

3.取余限制数据的范围

产生输出样例

#include <bits/stdc++.h> using namespace std; int main() { freopen("test.in","r",stdin);//设置 cin scanf 这些输入流都从 test.in中读取 freopen("test.out","w",stdout);//设置 cout printf 这些输出流都输出到 test.out里面去 //写待测程序,即标程 int a,b; while(scanf("%d%d",&a,&b)!=EOF) { printf("%d\n",a+b); } fclose(stdin); fclose(stdout); return 0; }

输出数据就都在test.out中了

出题也是个技术活,有时候需要你考虑题目的时间复杂度和空间复杂度来设置一些精巧的数据来排除某些方法。

最新回复(0)