随机数据生成

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() 序列一样、白拍。若一直拍不出错,再把范围逐步调大试。

小纸条

为什么对拍时数据要小?

登录 后可看答案

随机数据生成 · 考级冲刺 · op599 课程