Code:
#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;
// 生成随机整数
int randInt(int min, int max) {
return min + rand() % (max - min + 1);
}
// 生成网格
vector<string> generateGrid(int n, int m, int& start_i, int& start_j) {
vector<string> grid(n, string(m, '.'));
// 随机生成初始位置
start_i = randInt(0, n - 1);
start_j = randInt(0, m - 1);
grid[start_i][start_j] = '#';
// 随机生成障碍物
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
if (i == start_i && j == start_j) continue;
if (randInt(0, 1) == 1) {
grid[i][j] = 'X';
}
}
}
return grid;
}
// 生成移动方向
vector<int> generateOpts(int x) {
vector<int> opts(x);
for (int i = 0; i < x; ++i) {
opts[i] = randInt(1, 4);
}
return opts;
}
// 输出数据到控制台
void outputData(int n, int m, int x, const vector<string>& grid, const vector<int>& opts) {
// 输出 n, m, x
cout << n << " " << m << " " << x << endl;
// 输出网格
for (size_t i = 0; i < grid.size(); ++i) {
cout << grid[i] << endl;
}
// 输出移动方向
for (size_t i = 0; i < opts.size(); ++i) {
cout << opts[i] << endl;
}
// 输出分隔符
cout << "----------------------" << endl;
}
// 生成小数据
void generateSmallData() {
for (int i = 1; i <= 10; ++i) {
int n = randInt(1, 100);
int m = randInt(1, 100);
int x = randInt(1, 1000);
int start_i, start_j;
vector<string> grid = generateGrid(n, m, start_i, start_j);
vector<int> opts = generateOpts(x);
outputData(n, m, x, grid, opts);
}
}
// 生成大数据
void generateLargeData() {
for (int i = 1; i <= 10; ++i) {
int n = randInt(10000, 100000);
int m = randInt(10000, 100000);
int x = randInt(1000000, 10000000);
int start_i, start_j;
vector<string> grid = generateGrid(n, m, start_i, start_j);
vector<int> opts = generateOpts(x);
outputData(n, m, x, grid, opts);
}
}
int main() {
srand(static_cast<unsigned int>(time(0))); // 初始化随机数种子
generateSmallData(); // 生成小数据
generateLargeData(); // 生成大数据
return 0;
}