• 迷宫问题 广搜加上一些操作


    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <stack>
    #include <queue>
    using namespace std;
    int w[10][10],ww[10][10];
    int aa[10][10];
    int a[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
    struct node
    {
        int x,y,s;
    };
    void qq()
    {
        memset(w,0,sizeof(w));
        queue<node> Q;
        node q,p;
        q.x=q.y=q.s=0;
        w[0][0]=1;
        Q.push(q);
        while(Q.size())
        {
            p=Q.front();Q.pop();
            for(int i=0;i<4;i++)
            {
                q.x=p.x+a[i][0];
                q.y=p.y+a[i][1];
                q.s=p.s+1;
                if(q.x>=0&&q.x<5&&q.y>=0&&q.y<5&&!w[q.x][q.y]&&!aa[q.x][q.y])
                {
                    Q.push(q);
                    ww[q.x][q.y]=q.s;
                    w[q.x][q.y]=1;
                }
            }
        }
    }
    void bfs(int e,int f)
    {
        if(e==0&&f==0)
        {
            printf("(0, 0)
    ");
            return ;
        }
        for(int i=0;i<4;i++)
        {
            int x=e+a[i][0];
            int y=f+a[i][1];
            if(x>=0&&x<5&&y>=0&&y<5&&ww[e][f]==ww[x][y]+1&&!aa[x][y])
            {
                bfs(x,y);
                printf("(%d, %d)
    ",e,f);
            }
        }
    }
    int main()
    {
        for(int i=0;i<5;i++)
            for(int j=0;j<5;j++)
            scanf("%d",&aa[i][j]);
        qq();
        bfs(4,4);
        return 0;
    }

    http://poj.org/problem?id=3984

  • 相关阅读:
    python注释中文
    python学习好文
    浅析python 的import 模块(转)
    Python解释器镜像源修改
    Python解释器安装
    Python和Python解释器
    计算机基础小结
    网络瓶颈效应
    编程语言分类
    子查询|视图事务
  • 原文地址:https://www.cnblogs.com/a719525932/p/5667798.html
Copyright © 2020-2023  润新知