zoukankan      html  css  js  c++  java
  • POJ 3984

    bfs,用数组来构建队列,用front指针来连接每一步

    输出的时候注意(0, 0)逗号后又一个空格。。。。被坑了一次

    #include <iostream>
    using namespace std;
    struct step{
        int x,y;
        step *front;
        void init(int xx,int yy){
            x=xx;
            y=yy;
        }
    };
    int dir[4][2]={{0,1},{1,0},{-1,0},{0,-1}};
    int sq[5][5];
    step q[30];                            //相当于数组队列,用于记录每一步
    step bfs(){
        int i,nx,ny,x,y;
        step start;
        start.init(4,4);                        //从右下角开始走,终点为左上角
        start.front=NULL;
        q[0]=start;
        int j=0,l=1;
        while(j<=l){
            x=q[j].x;
            y=q[j].y;
            for(i=0;i<4;i++){
                nx=x+dir[i][0];
                ny=y+dir[i][1];
                if(nx<0||nx>4||ny<0||ny>4)continue;
                if(sq[ny][nx]==1)continue;
                sq[ny][nx]=1;
                step s;
                s.init(nx,ny);
                s.front=&q[j];                                    //用于记录前一步的指针
                if(s.x==0&&s.y==0)return s;
                q[l]=s;
                l++;
            }
            j++;
        }
        return start;
    }
    int main(){
        for(int i=0;i<5;i++){
            for(int j=0;j<5;j++){
                cin>>sq[i][j];
            }
        }
        step *s;
        step b;
        b=bfs();
        s=&b;
        while(s->front!=NULL){                            //用指针来记录路径,
            cout<<"("<<s->y<<", "<<s->x<<")"<<endl;
            s=s->front;
        }
        cout<<"(4, 4)"<<endl;
        return 0;
    }

  • 相关阅读:
    封装函数通过输入(元素,属性,目标值)改变div样式
    unicode键盘编码表
    js中的索引值
    JavaScript的三大组成部分
    阿望教你用vue写扫雷(超详细哦)
    关于换行以及换行属性
    html中的a标签详解
    利用GitHub Pages + jekyll快速搭建个人博客
    本博客文章转载,请注明出处
    git clone克隆项目太慢,或者直接导致克不下来的解决办法(转载请注明出处)
  • 原文地址:https://www.cnblogs.com/Mr-Xu-JH/p/3855016.html
Copyright © 2011-2022 走看看