简单的迷宫程序,C语言

您所在的位置:网站首页 简单c程序的结构 简单的迷宫程序,C语言

简单的迷宫程序,C语言

2023-06-10 13:28| 来源: 网络整理| 查看: 265

下面是一个简单的迷宫解决程序的C语言示例:

#include

#define ROWS 5 #define COLS 5

// 迷宫地图 int maze[ROWS][COLS] = {     {0, 1, 0, 0, 0},     {0, 1, 0, 1, 0},     {0, 0, 0, 0, 0},     {0, 1, 1, 1, 0},     {0, 0, 0, 1, 0} };

// 记录路径的栈 typedef struct {     int row;     int col; } Position;

Position stack[ROWS * COLS]; int top = -1;

// 入栈操作 void push(Position pos) {     stack[++top] = pos; }

// 出栈操作 Position pop() {     return stack[top--]; }

// 判断当前位置是否有效 int is_valid_position(int row, int col) {     if (row >= 0 && row < ROWS && col >= 0 && col < COLS && maze[row][col] == 0)         return 1;     else         return 0; }

// 解决迷宫问题 void solve_maze() {     Position current = {0, 0};     push(current);

    while (top > -1) {         current = pop();         int row = current.row;         int col = current.col;

        // 到达终点,迷宫已解决         if (row == ROWS - 1 && col == COLS - 1) {             printf("迷宫已解决!\n");             return;         }

        // 向下走         if (is_valid_position(row + 1, col)) {             maze[row + 1][col] = -1;             Position next = {row + 1, col};             push(next);         }

        // 向右走         if (is_valid_position(row, col + 1)) {             maze[row][col + 1] = -1;             Position next = {row, col + 1};             push(next);         }     }

    printf("迷宫无解!\n"); }

// 打印迷宫地图 void print_maze() {     for (int i = 0; i < ROWS; i++) {         for (int j = 0; j < COLS; j++) {             printf("%2d ", maze[i][j]);         }         printf("\n");     } }

int main() {     printf("迷宫地图:\n");     print_maze();

    printf("\n解决迷宫...\n");     solve_maze();

    printf("\n解决后的迷宫地图:\n");     print_maze();

    return 0; }

这个程序使用栈数据结构来实现迷宫的解决。迷宫通过一个二维数组 maze 表示,其中 0 表示可以通过的通路,1 表示墙壁。程序从起点位置开始,不断向下或向右移动,直到到达终点或无法继续移动。如果成功到达终点,则输出"迷宫已解决!";如果无法到达终点,则输出"迷宫无解!"。在解决过程中,将访问过的位置标记为-1,避免重复访问。

注意:此示例程序仅用于演示基本思路,实际的迷宫问题可能需要更复杂的算法和数据结构来解决。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3