深度优先搜索迷宫路径算法的实现

来源:互联网 发布:淘宝刷到单如何赚钱 编辑:程序博客网 时间:2024/04/30 23:08
#include "stdio.h"

#define ROW 8
#define COL 8

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(1)
       {
             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");
}
0 0
原创粉丝点击