老鼠走迷宫问题及其多个变种

一、说明
老鼠走迷宫问题的递归实现,是对递归思想的一种应用。
二、问题描述
给定一个二维数组,数组中2表示墙壁,0表示通路,由此数组可展示为一个迷宫图。给定入口位置和出口位置,判断之间是否存在通路并显示出走出迷宫的道路。
三、源码实现

/****************************************************************************************************** *   function:老鼠走迷宫问题的递归解法,四周只有一个入口点,一个出口点 *   author:yahai.zhang *   time: 2018.7.21*   File Name:老鼠走迷宫.c******************************************************************************************************/
#include <stdio.h>
#include <stdlib.h>#define ROW_MAX 21
#define COLUMN_MAX 36int visit(int, int);
int startI = 0, startJ = 1;     // 入口点
int endI = 20, endJ = 34;       // 出口点
int success = 0;int maze[ROW_MAX][COLUMN_MAX] = {{2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},{2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2},{2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 2},{2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2},{2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2},{2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2},{2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2},{2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2},{2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2},{2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2},{2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2},{2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 2},{2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2},{2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2},{2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2},{2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2},{2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2},{2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2},{2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2},{2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2},{2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2}
};int main(void) {printf("==========================BEGIN===========================\n"); int i, j;printf("显示迷宫:\n");for(i = 0; i < ROW_MAX; i++) {for(j = 0; j < COLUMN_MAX; j++)if(maze[i][j] == 2)printf("█");elseprintf("  ");printf("\n");}if(visit(startI, startJ) == 0)printf("\n没有找到出口!\n");else {printf("\n显示路径:入口(%d, %d), 出口(%d, %d)\n", startI, startJ, endI, endJ);for(i = 0; i < ROW_MAX; i++) {for(j = 0; j < COLUMN_MAX; j++) {if(maze[i][j] == 2)printf("█");else if(maze[i][j] == 1)printf("◇");elseprintf("  ");}printf("\n");}}printf("\n==========================END===========================\n"); return 0;
}
int visit(int i, int j) {maze[i][j] = 1;if(i == endI && j == endJ)success = 1;if(success != 1 && maze[i][j+1] == 0) visit(i, j+1);if(success != 1 && maze[i+1][j] == 0) visit(i+1, j);if(success != 1 && maze[i][j-1] == 0) visit(i, j-1);if(success != 1 && maze[i-1][j] == 0) visit(i-1, j);if(success != 1)maze[i][j] = 0;return success;
}

四、运行及结果


五、程序分析
该老鼠走迷宫主要依靠visit函数的递归实现,但是该实现存在以下几点不足:

  • 迷宫只能存在一个入口和一个出口,否则程序运行出现问题
  • 且入口点必须在边界点
  • 出口点也必须在边界

六、程序改进

/****************************************************************************************************** *   function:老鼠走迷宫问题的递归解法,四周只有多个入口点,多个出口点 *   author:yahai.zhang *   time: 2018.7.21*   File Name:老鼠走迷宫.c******************************************************************************************************/
#include <stdio.h>
#include <stdlib.h>#define ROW_MAX 21
#define COLUMN_MAX 36int visit(int, int);
int startI = 0, startJ = 1;     // 入口点
int endI = 20, endJ = 34;       // 出口点
int success = 0;int maze[ROW_MAX][COLUMN_MAX] = {{2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},{2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2},{2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 2},{2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2},{2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2},{2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2},{2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2},{2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2},{2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2},{2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0},{2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2},{2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 2},{2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0},{2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2},{2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2},{2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2},{2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2},{2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2},{2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2},{2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2},{2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2}
};int main(void) {printf("==========================BEGIN===========================\n"); int i, j;printf("显示迷宫:\n");for(i = 0; i < ROW_MAX; i++) {for(j = 0; j < COLUMN_MAX; j++)if(maze[i][j] == 2)printf("█");elseprintf("  ");printf("\n");}printf("\n输入起点:");scanf("%d %d", &startI, &startJ);printf("输入终点:");scanf("%d %d", &endI, &endJ);if(visit(startI, startJ) == 0)printf("\n没有找到出口!\n");else {printf("\n显示路径:入口(%d, %d), 出口(%d, %d)\n", startI, startJ, endI, endJ);for(i = 0; i < ROW_MAX; i++) {for(j = 0; j < COLUMN_MAX; j++) {if(maze[i][j] == 2)printf("█");else if(maze[i][j] == 1)printf("◇");elseprintf("  ");}printf("\n");}}printf("\n==========================END===========================\n"); return 0;
}
int visit(int i, int j) {maze[i][j] = 1;if(i == endI && j == endJ)success = 1;if(success != 1 && j <= endJ && maze[i][j+1] == 0) visit(i, j+1);if(success != 1 && i <= endI && maze[i+1][j] == 0) visit(i+1, j);if(success != 1 && j >= 0 && maze[i][j-1] == 0) visit(i, j-1);if(success != 1 && i >= 0 && maze[i-1][j] == 0) visit(i-1, j);if(success != 1)maze[i][j] = 0;return success;
}

七、运行及结果




八、分析及改进
改进后,存在以下优点:

  • 迷宫可以存在多个入口和多个出口
  • 且入口点可以随意指定,出口位置随意指定
  • 实现了任意两点的路径规划

在实际情况中,一般不知道出口的位置,所以在程序的运行过程中不该指定出口位置

九、程序改进

仅指定入口地址

/****************************************************************************************************** *   function:老鼠走迷宫问题的递归解法,四周只有多个入口点,多个出口点,仅指定入口地址 *   author:yahai.zhang *   time: 2018.7.21*   File Name:老鼠走迷宫.c******************************************************************************************************/
#include <stdio.h>
#include <stdlib.h>#define ROW_MAX 21
#define COLUMN_MAX 36int visit(int, int);
int startI = 0, startJ = 1;     // 入口点
int endI = 20, endJ = 34;       // 出口点
int success = 0;int maze[ROW_MAX][COLUMN_MAX] = {{2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},{2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2},{2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 2},{2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2},{2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2},{2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2},{2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2},{2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2},{2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2},{2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0},{2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2},{2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 2},{2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0},{2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2},{2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2},{2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2},{2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2},{2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 2, 2},{2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2},{2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2},{2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}
};int main(void) {printf("==========================BEGIN===========================\n"); int i, j;printf("显示迷宫:\n");for(i = 0; i < ROW_MAX; i++) {for(j = 0; j < COLUMN_MAX; j++)if(maze[i][j] == 2)printf("█");elseprintf("  ");printf("\n");}printf("\n输入起点:");scanf("%d %d", &startI, &startJ);if(visit(startI, startJ) == 0)printf("\n没有找到出口!\n");else {printf("\n显示路径:\n");for(i = 0; i < ROW_MAX; i++) {for(j = 0; j < COLUMN_MAX; j++) {if(maze[i][j] == 2)printf("█");else if(maze[i][j] == 1)printf("◇");elseprintf("  ");}printf("\n");}}printf("\n==========================END===========================\n"); return 0;
}
int visit(int i, int j) {maze[i][j] = 1;if ( i == ROW_MAX || j == COLUMN_MAX)success = 1;if ((i == endI && j == endJ) )success = 1;if(success != 1 && j <= endJ && maze[i][j+1] == 0) visit(i, j+1);if(success != 1 && i <= endI && maze[i+1][j] == 0) visit(i+1, j);if(success != 1 && j >= 0 && maze[i][j-1] == 0) visit(i, j-1);if(success != 1 && i >= 0 && maze[i-1][j] == 0) visit(i-1, j);if(success != 1)maze[i][j] = 0;return success;
}

十、运行结果

【经典算法】老鼠走迷宫问题相关推荐

  1. c语言老鼠迷宫程序,C语言经典算法——老鼠走迷宫(二)

    说明 ​由于迷宫的设计,老鼠走迷宫的入口至出口路径可能不只一条,如何求出所有的路径呢? ​解法 ​求所有路径看起来复杂但其实更简单,只要在老鼠走至出口时显示经过的路径,然后退回上一格重新选择下一个位置 ...

  2. 老鼠走迷宫php算法,C语言经典算法 - 老鼠走迷官(一)

    C语言经典算法 - 老鼠走迷官(一) 说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表 示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下 ...

  3. 经典算法五--老鼠走迷宫

    说明: 老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1表示老鼠行走的路径,试以程式求出由入口至出口的路径. 解法: 老鼠的走法有上,下,左,右四个方向,在每前进一格之后就选 ...

  4. C语言老鼠走迷宫(单路径)算法详细讲解

    最近在学习C语言的一些经典算法,其中遇到了一点困难,导致卡进度了.琢磨了很久,在绘制流程图时,突然灵感大开理解了,老鼠走迷宫算法的奇妙.所以写了这个,一来是方便以后右和我类似的同学自学时,遇到这个问题 ...

  5. 算法:老鼠走迷宫问题

    算法:老鼠走迷宫问题(初) [写在前面] 老鼠走迷宫问题的递归实现,是对递归思想的一种应用. [问题描述] 给定一个二维数组,数组中2表示墙壁,0表示通路,由此数组可展示为一个迷宫图.给定入口位置和出 ...

  6. C语言-老鼠走迷宫(深度寻路算法)

    老鼠走迷宫-c语言(基于深度优先的寻路算法) 这个是学校的课设,刚开始有点头疼,但是感觉越做越有意思了,于是就有如下代码,可能相较于大佬还有差距,但是这是我目前所能做的最优的程序了吧! 话不多说,说一 ...

  7. Java算法六:老鼠走迷宫

    老鼠走迷宫(Mouse) 问题说明: 老鼠走迷宫是循环求解的基本类型,我们在二维数组中用2来表示迷宫的墙壁,使用1来表示老鼠的行走路径,并用程序求出从入口到出口的距离. 问题解答: 实际上是使用回溯算 ...

  8. java老鼠走迷宫算法_老鼠走迷宫java算法

    说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表 示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下.右四个方向,在每前进一格之后就选一个 ...

  9. c语言老鼠走迷宫课程设计,C语言算法之老鼠走迷宫

    1.Algorithm Gossip: 老鼠走迷官(一)说明:老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表 示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法: ...

最新文章

  1. 这所211高校通知不放寒假!校园将实行封闭管理!
  2. PinPoint分布式全链路监控
  3. 重构路上遇到的一些兼容性问题
  4. docker 批量删除 镜像或容器 删除所有容器
  5. xml布局显示需要预判断,可是还没有show出来,怎么办?
  6. 『骑士精神 IDA*』
  7. java 使用本机代理_Java与本机代理–他们所做的强大功能
  8. java se开发_JAVA_SE基础——3.Java程序的开发流程
  9. 带宽检测工具iftop
  10. AI 降噪、多平台支持,在线课程背后的黑科技大公开!
  11. html元素的默认样式,CSS重置,常见元素的默认样式
  12. 整数划分问题将正整数n表示成一系列正整数之和
  13. SPARC架构下的反汇编(一)——SPARC简介
  14. 【数据结构与算法python】最小生成树算法-Prim算法
  15. 关于职场,你需要不断拼搏
  16. OnLevelWasLoaded 弃用 Unity5.4 新方法 SceneManager.sceneLoaded
  17. OCP最新题库收集,052新加的考题及答案整理-19
  18. BRAT的安装、配置、标注操作
  19. 有衬线字体 无衬线字体_字体101:衬线与无衬线
  20. Codeup——597 | 问题 A: Set Similarity (25)

热门文章

  1. PHP怎么设置字体走马灯效果,微信小程序怎么设置背景颜色渐变以及字体走马灯效果(高考倒计时)...
  2. 酒店评价数据分析题目及3、4问答案
  3. 交换机接口类型Access和Trunk详解
  4. java nonematch_Java 使用anyMatch、allMatch与noneMatch方法
  5. 模型部署——融合BN和Conv层
  6. Vagrant 基本使用操作
  7. 免费百度网盘急速下载器 持续更新中
  8. 微信小程序 canvas 卡顿 闪退
  9. mysql中condition的用法,mybatis的condition使用
  10. 分辨率高,清晰度高?