当需要解决迷宫问题时,可以使用深度优先搜索 (DFS) 或广度优先搜索 (BFS) 算法来求解。以下是一个使用 C语言 编写的简单迷宫求解程序,它使用递归的深度优先搜索算法来解决迷宫问题。

#include <stdio.h>
#define ROW 5
#define COL 5

int maze[ROW][COL] = {
    {1, 0, 1, 1, 1},
    {1, 0, 1, 0, 1},
    {1, 1, 1, 0, 1},
    {0, 0, 0, 0, 1},
    {1, 1, 1, 1, 1}
};
int visited[ROW][COL];

int solveMaze(int x, int y) {
    if (x == ROW - 1 && y == COL - 1) {
        visited[x][y] = 1;
        return 1;
    }

    if (x >= 0 && y >= 0 && x < ROW && y < COL && maze[x][y] == 1 && visited[x][y] == 0) {
        visited[x][y] = 1;

        if (solveMaze(x + 1, y) == 1) { // 向下移动
            return 1;
        }
        if (solveMaze(x, y + 1) == 1) { // 向右移动
            return 1;
        }
        if (solveMaze(x - 1, y) == 1) { // 向上移动
            return 1;
        }
        if (solveMaze(x, y - 1) == 1) { // 向左移动
            return 1;
        }

        visited[x][y] = 0; // 回溯
        return 0;
    }

    return 0;
}

int main() {
    if (solveMaze(0, 0) == 1) {
        printf('迷宫可解,路径如下:\n');
        for (int i = 0; i < ROW; i++) {
            for (int j = 0; j < COL; j++) {
                printf('%d ', visited[i][j]);
            }
            printf('\n');
        }
    } else {
        printf('迷宫不可解!\n');
    }

    return 0;
}

首先定义了一个 5x5 的迷宫,迷宫中 1 表示可以通过的路径,0 表示墙壁。solveMaze 函数用于求解迷宫,通过向四个方向递归地尝试移动来找到路径。如果找到了终点,则返回 1,否则返回 0。visited 数组用于记录路径,1 表示已经访问过的路径。

在 main 函数中调用 solveMaze 函数并输出结果。如果迷宫可解,输出路径,否则输出'迷宫不可解'。

请注意,这只是一个简单的迷宫求解示例程序,可以根据实际需求进行修改和扩展。

C语言迷宫求解算法 - 深度优先搜索 (DFS) 实现

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

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