BFS(简单路径打印)

BFS路径打印

#include <cstdio>
#include <iostream>
#include <queue>

using namespace std;

int vis[10][10];
int maze[10][10];
int dir[2][2] = {{1,0},{0,1}};

struct node{
    int x, y;
};

node q[10][10];

void bfs()
{
    queue<node> Q;
    vis[0][0] = 1;
    node a;
    a.x = a.y = 0;
    Q.push(a);
    while( !Q.empty() ) {
        node t = Q.front();
        Q.pop();
        if( t.x == 4 && t.y == 4 ) {
            break;
        }
        for(int i=0; i<2; i++) {
            node tt;
            tt.x = t.x + dir[i][0];
            tt.y = t.y + dir[i][1];
            if( !maze[tt.x][tt.y] && tt.x>=0 && tt.x<5 && tt.y>=0 && tt.y<5 && !vis[tt.x][tt.y] ) {
                q[tt.x][tt.y].x = t.x;
                q[tt.x][tt.y].y = t.y;
                vis[tt.x][tt.y] = 1;
                Q.push(tt);
            }
        }
    }
}

void pri(int sx, int sy) {
    if( sx==0 && sy==0 ) {
        printf("(%d, %d)\n", sx, sy);
        return ;
    }
    pri(q[sx][sy].x, q[sx][sy].y);
    printf("(%d, %d)\n", sx, sy);
}

int main()
{
    // freopen("1.txt", "r", stdin);
    for(int i=0; i<5; i++)
        for(int j=0; j<5; ++j) 
            scanf("%d", &maze[i][j]);
    bfs();
    pri(4,4);
    return 0;
}
    原文作者:BFS
    原文地址: https://blog.csdn.net/huziyang9/article/details/47400701
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞