迷宫问题 BFS

来源:互联网 发布:js删除数组中某个元素 编辑:程序博客网 时间:2024/06/07 01:32
#include<stdio.h>typedef struct point{    int x;    int y;    int b;}POINT;int main(){    int maze[5][5] , book[5][5]= {0};    POINT que[50];    int nx , ny , tx , ty;    int head , tail ;    int next[4][2]= {0,1,1,0 ,-1,0 ,0,-1 };    int i , j;    int flag;    head = tail= 0; nx= 4 ; ny= 4 ;book[nx][ny]= 1 ;    que[0].x= nx; que[0].y= ny ; que[0].b= -1;    flag =0;    tail ++;    for(i= 0 ; i< 5 ; i++)    for(j= 0 ; j< 5 ; j++){        scanf("%d",&maze[i][j]);    }    while( head< tail ){        for( i= 0 ; i< 4 ; i++){            tx = nx+ next[i][0];            ty = ny+ next[i][1];            if(tx> 4|| tx < 0|| ty > 4|| ty < 0)continue ;             if(book[tx][ty]== 1|| maze[tx][ty]== 1)continue ;            que[tail].x = tx ;            que[tail].y = ty ;            que[tail].b = head;            tail ++ ;book[tx][ty] =1;//          printf("OK %d %d\n",tx,ty);            if(tx== 0&& ty == 0) {                flag =1;                break;            }        }        head ++;        nx = que[head].x;        ny = que[head].y;//        printf("%d %d\n",head,tail);        if(flag== 1)break;    }    tail --;        while(tail!= -1){        printf("(%d, %d)\n",que[tail].x,que[tail].y);        tail = que[tail].b;    }}



// BFS 同步搜索, 由终点到起点入栈 , 链式输出路径;
原创粉丝点击