#include <stdio.h>
#include
<stdlib.h>
#include
<iostream.h>
#define M 8
#define N 11
/* 迷宫maze[M][N]中求从入口maze[x1][y1]到出口maze[x2][y2]的一条路径 */
/* 其中 1<=x1,x2<=M-2 , 1<=y1,y2<=N-2 */
int mazePath(int* maze[], int* direction[], int x1, int y1, int x2, int
y2)
{
int k,g,h;
for (k = 0; k < 4; k++)
{
g = x1 + direction[k][0];
h = y1 + direction[k][1];
if (g == x2 && h == y2 && maze[g][h] == 0)
{
/* 找到路径*/
printf( “The revers path is: “ );
printf( “the node is: %d %d “, x2, y2 );
printf( “the node is: %d %d “, x1, y1 );
return 1;
}
if( maze[g][h] == 0 )
{
maze[g][h] = 2;
if (mazePath(maze, direction, g, h, x2, y2) == 1)
{
/*如能找到路径*/
printf( “the node is: %d %d “, x1, y1 );
return 1;
}
}
}
return 0;
}
int direction[][2] = { 0,1,1,0,0,–1,–1,0 }
;
int maze[][N] =
{
1,1,1,1,1,1,1,1,1,1,1,
1,0,1,0,0,1,1,1,0,0,1,
1,0,0,0,0,0,1,0,0,1,1,
1,0,1,1,1,0,0,0,1,1,1,
1,0,0,0,1,1,1,1,0,1,1,
1,1,0,0,1,0,1,1,0,0,1,
1,1,1,0,0,0,0,0,0,0,1,
1,1,1,1,1,1,1,1,1,1,1
}
;
int
main()
{
int *m[M] ;
int *d[4];
int i;
for ( i=0; i<M; i++ )
m[i] = maze[i];
for ( i=0; i<4; i++ )
d[i] = direction[i];
mazePath( m, d, 1, 1, 6, 9 );
cout<<endl;
for ( i=0 ; i<M ; i++ )
{
for ( int j=0 ; j<N ; j++ )
{
cout<<m[i][j]<<‘ ‘;
}
cout<<endl;
}
cout<<endl;
return 0;
}