迷宫问题的分析与实现
来源:互联网 发布:python java socket 编辑:程序博客网 时间:2024/06/07 02:48
【问题描述】
以一个 m*n的方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论其中二维矩阵中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。相关博文
c++实现源码
/*迷宫问题*/#include<iostream>#include<stack>using namespace std;char maze[10][10] ={{ '0','1','1','1','1','1','1','1','1','1' },{ '0','1','0','1','1','1','1','1','1','1' },{ '0','0','0','1','1','1','1','0','0','0' },{ '1','0','0','0','0','1','1','0','1','0' },{ '1','0','1','1','0','1','1','0','1','0' },{ '1','0','1','1','0','1','1','0','1','0' },{ '1','1','0','0','0','1','1','0','1','0' },{ '1','1','0','1','1','1','1','0','1','0' },{ '1','1','0','0','0','0','0','0','1','0' },{ '1','1','1','1','1','1','1','1','1','0' },};/*打印源数据*/void Show(){for (int i = 0; i < sizeof(maze) / sizeof(maze[0]); i++){for (int j = 0; j < sizeof(maze[0]) / sizeof(maze[0][0]); j++){cout << maze[i][j] << " ";}cout << endl;}}/*递归查找*/void RecFind(int i, int j){if (maze[i][j] == '1') return;if (maze[i][j] == '@') return;if (maze[i][j] = '@' && j == 9 && i == 9){cout << "找到路径" << endl;Show();exit(0);}maze[i][j] = '@';RecFind(i, j + 1);RecFind(i + 1, j);RecFind(i, j - 1);RecFind(i - 1, j);}/*非递归实现*/void NoRecFind(){int i = 0;int j = 0;stack<char> s;s.push(maze[i][j]);maze[i][j] = '@';cout << "进入方法!" << endl;while (true){if (maze[i][j + 1] == '0'){s.push(maze[i][++j]);maze[i][j] = '@';}else if (maze[i + 1][j] == '0'){s.push(maze[++i][j]);maze[i][j] = '@';}else if (maze[i][j - 1] == '0'){s.push(maze[i][--j]);maze[i][j] = '@';}else if (maze[i - 1][j] == '0'){s.push(maze[--i][j]);maze[i][j] = '@';}if (maze[i][j + 1] != '0' && maze[i + 1][j] != '0' &&maze[i][j - 1] != '0' && maze[i - 1][j] != '0'){if (i >= 9 && j >= 9){break;}else{maze[i][j] = '*';s.pop();}char tmp = s.top();s.push(tmp);}}Show();}int main(){Show();RecFind(0, 0);NoRecFind();return 0;}
阅读全文
1 0
- 迷宫问题的分析与实现
- 迷宫问题的研究与实现
- 迷宫算法实现与分析
- 简单的实现迷宫问题
- 迷宫问题算法设计与实现
- 栈与递归实现迷宫问题求
- 迷宫问题算法分析
- 数据结构(C语言版)”栈与队列“章节迷宫求解问题的思路与实现
- 利用堆栈实现迷宫问题的求解
- 解迷宫问题的Java实现
- 迷宫问题的非递归实现
- 罗密欧与朱丽叶的迷宫问题_dfs
- 栈实现-迷宫问题
- 队列实现迷宫问题
- C++实现迷宫问题
- 队列实现迷宫问题
- 走迷宫的问题
- 迷宫问题的DFS
- 51单片机等串口缓存队列
- 2017 Multi-University Training Contest
- Struts2 官方教程:表单验证(Form Validation)
- Java复习笔记+经验总结-04 java异常 常用工具类
- 极限与连续的区别
- 迷宫问题的分析与实现
- php微信开发源码
- pandas官方文档cookbook(6)中Split&Pivot&Apply翻译
- c++函数的重载
- 冒泡排序的示例-使用冒泡排序,输入三个整数,按照从小到大的顺序排列输出
- eclipse配置JDK和设置编译版本的几种方法
- SCU
- 存储优化
- 习题 4.8 给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为’E‘。