#include #include int 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, 2, 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" ); } if ( visit ( startI, startJ ) == 0 ) printf ( "\n没有找到出口!\n" ); else { 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" ); } } 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; }