算法之老鼠找迷宫2-找出所有出路
来源:互联网 发布:淘宝店铺允许出租吗 编辑:程序博客网 时间:2024/05/29 15:13
接着上一篇的想法,逻辑控制只找到了一条出路,现在我们想找出所有出路怎么办?
如果迷宫的设计使得走法不止一种,则只要在老鼠走至出口时显示出所有的路径,然后退回上一格重新选择下一个位置继续递归就可以了。如下图有两种走法。
#include<stdio.h>#include<stdlib.h>void visit(int,int);int maze[9][9] = {{2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,2}, {2,0,2,2,0,2,2,0,2}, {2,0,2,0,0,2,0,0,2}, {2,0,2,0,2,0,2,0,2}, {2,0,0,0,0,0,2,0,2}, {2,2,0,2,2,0,2,2,2}, {2,0,0,0,0,0,0,0,2}, {2,2,2,2,2,2,2,2,2}};int startI = 1,startJ = 1;//开始的位置int endI = 7, endJ = 7;//出口的位置void visit(int i,int j){ int m,n; maze[i][j] = 1; //打印函数在递归函数里面,找到一条路径就打印 if(i == endI && j==endJ){ printf("\n show the path!\n"); for(m=0;m<9;m++){ for(n=0;n<9;n++) if(maze[m][n]==2) printf("2"); else if(maze[m][n]==1) printf("1"); else printf("0"); printf("\n"); } } if( maze[i+1][j]==0) visit(i+1,j); if( maze[i-1][j]==0) visit(i-1,j); if( maze[i][j+1]==0) visit(i,j+1); if( maze[i][j-1]==0) visit(i,j-1); maze[i][j]=0;}int main(){ int i,j; printf("show the maze!\n"); for(i=0;i<9;i++){ for(j=0;j<9;j++) if(maze[i][j]==2) printf("2"); else printf("0"); printf("\n"); } visit(startI,startJ); return 0;}
阅读全文
0 0
- 算法之老鼠找迷宫2-找出所有出路
- 算法之老鼠走迷宫1-找一条路
- Algorithm Gossip(6) 老鼠找迷宫(2)
- C语言算法之老鼠走迷宫
- 老鼠走迷宫算法
- 算法 老鼠迷宫问题
- YTU2899——险恶逃生 I(迷宫,找所有可能出路)
- 数据结构与算法学习之路:迷宫问题——回溯思想找出所有路径
- 数据结构经典算法学习之老鼠走迷宫01
- 数据结构经典算法学习之老鼠走迷宫02
- 数据结构与算法之老鼠走迷宫问题
- 数据结构与算法之老鼠走迷宫问题
- 老鼠走迷宫,只找一条路
- Algorithm Gossip(5) 老鼠找迷宫(1)
- 老鼠走迷宫【2】
- 老鼠走迷宫递归算法
- 深度优先搜索找迷宫的出路
- 老鼠走迷宫问题,求出所有路径
- 织梦dedecms搜索页去掉分词搜索功能的小方法
- Mybatis原理解析(一)--java.sql数据库操作的基本实现方式
- java 面试题绝对有用
- 初学嵌入式系统的简谈
- 静态内部类
- 算法之老鼠找迷宫2-找出所有出路
- RxJava2.0的使用详解
- 第三讲 第一个HelloWorld程序及其语法详解
- Linux下MySQL5.6.15-忘记root密码-重置
- IE7下的兼容问题
- Android之checkable接口
- 匿名内部类
- sqlParser 处理SQL(增删改查) 替换schema 用于多租户模式下
- IntelliJ IDEA 2017.2 破解(注册)