#include
#define ROW 8
#define COL 8
#define TRUE 1
int Maze[COL][ROW] = { {1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,1},
{1,0,1,0,1,1,0,1},
{1,0,1,1,1,0,0,1},
{1,1,1,0,0,0,1,1},
{1,0,0,0,1,1,1,1},
{1,0,1,0,0,0,0,0},
{1,1,1,1,1,1,1,1}};
typedef struct plot
{
int col;
int row;
}Plot;
int top = 0;
Plot path_stack[COL * ROW];
void depth_search(int i, int j);
void push(int i, int j);
void pop();
void print_path();
int main()
{
depth_search(1, 0);
print_path();
return 0;
}
void depth_search(int i, int j)
{
Maze[i][j] = 2;
push(i, j);
while(TRUE)
{
if(j+1
{
j++;
Maze[i][j] = 2;
push(i, j);
continue;
}
if(i+1
{
i++;
Maze[i][j] = 2;
push(i, j);
continue;
}
if(j>0 && Maze[i][j-1]==0)
{
j--;
Maze[i][j] = 2;
push(i, j);
continue;
}
if(i>0 && Maze[i-1][j]==0)
{
i--;
Maze[i][j] = 2;
push(i, j);
continue;
}
if(i!=6 || j!=7)
pop();
else
break;
}
}
void push(int x, int y)
{
path_stack[top].col = x;
path_stack[top].row = y;
top++;
}
void pop()
{
top--;
}
void print_path()
{
int i;
printf("\nStart->");
for(i=0; i
printf("(%d,%d)->", path_stack[i].col, path_stack[i].row);
printf("->end\n\n");
}