随机数据生成
约 8 分钟
写个小程序,按题目的范围随机造输入。数据规模一开始要小,原因有二:一是小数据里暴力跑得快,对拍一秒能拍上千组,藏在边界的错更容易被撞到;二是万一拍出不同,小样例你能手算或肉眼验证,几个数就看得出谁对谁错,几万个数根本没法查。
#include <bits/stdc++.h>
using namespace std;
int main() {
srand(time(0)); // 用时间做种子,每次不同
int n = rand() % 8 + 1; // n 取 1..8,故意造小
printf("%d\n", n);
for (int i = 0; i < n; i++)
printf("%d ", rand() % 20 - 5); // 值在 -5..14,含负数
return 0;
}
要点:故意覆盖边界和特殊情况——负数、、相等元素、、最大最小值,这些正是最容易挂的地方。别忘了保证生成的数据合法(满足题目约束,如"保证连通""无重边")。种子用 time(0),否则每次 rand() 序列一样、白拍。若一直拍不出错,再把范围逐步调大试。
小纸条
为什么对拍时数据要小?
登录 后可看答案