简单的迷宫程序,C语言 |
您所在的位置:网站首页 › 简单c程序的结构 › 简单的迷宫程序,C语言 |
下面是一个简单的迷宫解决程序的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 |