首页 > 代码库 > DFS 编写 老鼠走迷宫(修改)
DFS 编写 老鼠走迷宫(修改)
http://yuncode.net/code/c_5093587f5dbaf9
该文章使用递归可以寻找出路径,但并未寻找出所有的路径。
#include <stdio.h> #include <stdlib.h> void visit ( int, int ); int maze[7][7] = {{2, 2, 2, 2, 2, 2, 2}, {2, 0, 0, 0, 0, 0, 2}, {2, 0, 2, 0, 2, 0, 2}, {2, 0, 0, 2, 0, 0, 2}, {2, 2, 0, 2, 0, 2, 2}, {2, 0, 0, 0, 0, 0, 2}, {2, 2, 2, 2, 2, 2, 2} }; int startI = 1, startJ = 1; // 入口 int endI = 5, endJ = 5; // 出口 int success = 0; int main ( void ) { int i, j; printf ( "显示迷宫:\n" ); for ( i = 0; i < 7; i++ ) { for ( j = 0; j < 7; j++ ) if ( maze[i][j] == 2 ) printf ( "█" ); else printf ( " " ); printf ( "\n" ); } visit ( startI, startJ ); } void show() { int i, j; printf ( "\n显示路径:\n" ); for ( i = 0; i < 7; i++ ) { for ( j = 0; j < 7; j++ ) { if ( maze[i][j] == 2 ) printf ( "█" ); else if ( maze[i][j] == 1 ) printf ( "◇" ); else printf ( " " ); } printf ( "\n" ); } } void visit ( int i, int j ) { if ( i == endI && j == endJ ) { success = 1; show( ); } if ( maze[i][j] == 0 )//运用回溯法判断 { maze[i][j] = 1; visit( i+1, j); visit( i, j+1); visit( i, j-1); visit( i-1, j); maze[i][j] = 0; } }
修改后可以获得所有的路径。
本文出自 “马二丫” 博客,请务必保留此出处http://8734514.blog.51cto.com/8724514/1567122
DFS 编写 老鼠走迷宫(修改)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。