#include \n#include \n#include \n#include \n\n// 定义斐波那契数列的生成函数\nstd::vector generateFibonacci(int n) {\n std::vector fibonacci = {1, 1};\n for (int i = 2; i < n; i++) {\n fibonacci.push_back(fibonacci[i-1] + fibonacci[i-2]);\n }\n return fibonacci;\n}\n\nint main() {\n // 随机数生成器\n std::random_device rd;\n std::mt19937 rng(rd());\n std::uniform_int_distribution opDist(1, 5); // 操作序号的分布\n std::uniform_int_distribution xDist(1, 10); // 插入或删除的数的个数的分布\n std::uniform_int_distribution yDist(1, 10); // 查询区间的右边界的分布\n\n int n;\n std::cin >> n;\n\n std::vector sequence; // 数列\n std::vector fibonacci = generateFibonacci(100); // 生成100个斐波那契数\n\n for (int i = 0; i < n; i++) {\n int op = opDist(rng); // 随机生成操作序号\n int x = xDist(rng); // 随机生成插入或删除的数的个数\n int y = yDist(rng); // 随机生成查询区间的右边界\n\n if (op == 1) {\n // 在数列后方插入斐波那契数列\n for (int j = 0; j < x; j++) {\n sequence.push_back(fibonacci[j]);\n }\n } else if (op == 2) {\n // 在数列前方插入斐波那契数列\n std::reverse(fibonacci.begin(), fibonacci.begin() + x);\n sequence.insert(sequence.begin(), fibonacci.begin(), fibonacci.begin() + x);\n } else if (op == 3) {\n // 在数列后方删去x个数\n sequence.erase(sequence.end() - x, sequence.end());\n } else if (op == 4) {\n // 查询数列区间[x,y]的最大值\n int maxValue = 0;\n for (int j = x-1; j < y; j++) {\n if (sequence[j] > maxValue) {\n maxValue = sequence[j];\n }\n }\n std::cout << maxValue << std::endl;\n } else if (op == 5) {\n // 查询数列区间[x,y]的和\n int sum = 0;\n for (int j = x-1; j < y; j++) {\n sum += sequence[j];\n }\n std::cout << sum << std::endl;\n }\n }\n\n return 0;\n}

C++ 数据结构:斐波那契数列操作 - 生成随机数据测试

原文地址: https://www.cveoy.top/t/topic/qx2q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录