自动生成100x100的数字矩阵迷宫
时间: 2023-12-14 20:39:28 浏览: 126
以下是生成数字矩阵迷宫的 Python 代码:
```python
import random
def generate_maze(n):
maze = [[0 for x in range(n)] for y in range(n)]
for i in range(n):
for j in range(n):
maze[i][j] = random.randint(0, 9)
return maze
maze = generate_maze(100)
for row in maze:
print(row)
```
这个函数使用了 Python 的随机数生成器来生成数字矩阵迷宫。它首先创建一个 $n \times n$ 的二维列表,然后为每个位置随机生成一个数字。你可以根据需要调整迷宫的大小。最后,它打印出生成的迷宫,你可以使用该迷宫进行后续处理。
相关问题
C++生成100x100的数字矩阵迷宫
以下是一个生成100x100数字矩阵迷宫的C++程序:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int N = 100; // 迷宫大小
int maze[N][N]; // 迷宫矩阵
void init_maze() {
// 初始化迷宫边界为墙壁
for (int i = 0; i < N; i++) {
maze[0][i] = 1;
maze[N-1][i] = 1;
maze[i][0] = 1;
maze[i][N-1] = 1;
}
// 初始化迷宫内部为通路
for (int i = 1; i < N-1; i++) {
for (int j = 1; j < N-1; j++) {
maze[i][j] = 0;
}
}
}
void gen_maze() {
srand(time(NULL)); // 设置随机种子
int cx = rand() % (N-2) + 1; // 随机起点x坐标
int cy = rand() % (N-2) + 1; // 随机起点y坐标
maze[cy][cx] = 2; // 起点
int dx = 0, dy = 0; // 方向
while (true) {
int dir = rand() % 4; // 随机选择一个方向
switch (dir) {
case 0: dx = 1; dy = 0; break; // 向右
case 1: dx = -1; dy = 0; break; // 向左
case 2: dx = 0; dy = 1; break; // 向下
case 3: dx = 0; dy = -1; break; // 向上
}
int nx = cx + dx, ny = cy + dy; // 下一步的坐标
if (nx < 1 || nx >= N-1 || ny < 1 || ny >= N-1 || maze[ny][nx] != 0) {
continue; // 越界或者已经是通路或者墙壁,重新选择方向
}
maze[ny][nx] = 2; // 标记为通路
maze[cy+dy/2][cx+dx/2] = 2; // 中间也是通路
cx = nx; cy = ny; // 移动
if (cx == 1 && cy == 1) {
break; // 到达终点
}
}
maze[cy][cx] = 3; // 标记为终点
}
void print_maze() {
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (maze[i][j] == 1) {
cout << "#"; // 墙壁
} else if (maze[i][j] == 2) {
cout << " "; // 通路
} else if (maze[i][j] == 3) {
cout << "E"; // 终点
} else {
cout << "0"; // 其他
}
}
cout << endl;
}
}
int main() {
init_maze(); // 初始化迷宫
gen_maze(); // 生成迷宫
print_maze(); // 输出迷宫
return 0;
}
```
该程序使用随机算法生成迷宫,其中数字2表示通路,数字3表示终点。你可以根据需要修改代码以生成其他大小的迷宫。
生成一个100x100的数字矩阵迷宫
好的,以下是生成一个100x100的数字矩阵迷宫的 Python 代码:
```python
import random
# 定义迷宫的长和宽
width = 100
height = 100
# 初始化迷宫矩阵
maze = [[1 for j in range(width)] for i in range(height)]
# 随机选择一个起点
start_x = random.randint(0, width - 1)
start_y = random.randint(0, height - 1)
# 将起点标记为通路
maze[start_y][start_x] = 0
# 随机选择一个终点
end_x = random.randint(0, width - 1)
end_y = random.randint(0, height - 1)
# 确保终点和起点不在同一个位置
while end_x == start_x and end_y == start_y:
end_x = random.randint(0, width - 1)
end_y = random.randint(0, height - 1)
# 将终点标记为通路
maze[end_y][end_x] = 0
# 生成迷宫
stack = [(start_x, start_y)]
while stack:
x, y = stack.pop()
directions = [(x-1, y), (x+1, y), (x, y-1), (x, y+1)]
random.shuffle(directions)
for new_x, new_y in directions:
if 0 <= new_x < width and 0 <= new_y < height and maze[new_y][new_x] == 1:
maze[new_y][new_x] = 0
stack.append((new_x, new_y))
# 输出迷宫
for row in maze:
for cell in row:
print(cell, end='')
print()
```
这个程序首先定义了迷宫的长和宽,然后初始化了一个矩阵,用 1 表示墙,用 0 表示通路。程序随机选择起点和终点,并将其标记为通路。接下来,程序使用深度优先搜索算法生成迷宫,最后输出迷宫矩阵。
阅读全文