zoukankan      html  css  js  c++  java
  • 1252:走迷宫

    #include<bits/stdc++.h>
    using namespace std;
    struct node{//新增step以记录所走步数 
        int x,y,step;
    }que[2510];
    char mp[50][50];//地图 
    int f,r;//队首,队尾 
    int n,m;//行列 
    int fx[4][2]={{0,-1},{0,1},{1,0},{-1,0}};//方向 
    void bfs(int x,int y){
        f=r=1;//初始化队列 
        que[r].x=x , que[r].y=y , mp[x][y]='#' , que[r].step=1;//插入,并将脚下设为已走,注意,这里的最短步数是要算上第一步的 
    
        while(f<=r){
            node t;
            t.x=que[f].x , t.y=que[f].y , t.step=que[f].step;//记录队首 
            if(t.x==n-1 && t.y==m-1){//判断是否走到右下角 
                cout<<t.step<<endl;//输出步数 
                break;
            }
            for(int i=0;i<4;i++){
                int nx=t.x+fx[i][0];//下一步的横坐标 
                int ny=t.y+fx[i][1];//下一步的纵坐标 
            
                if(nx>=0 && nx<n && ny>=0 && ny<m && mp[nx][ny]=='.'){//约束条件 
                    mp[nx][ny]='#';//将当前位置改成已走过 
                    r++;//准备入队 
                    que[r].x=nx;
                    que[r].y=ny;
                    que[r].step=t.step+1;//每遍历一次步数+1 
                }
            }
            f++;//队首出队 
        }
    }
    int main(){
        //输入 
        cin>>n>>m;
        for(int i=0;i<n;i++) cin>>mp[i];
        //从左上角开始,即从(0,0)开始遍历 
        bfs(0,0);
        return 0;
    } 
  • 相关阅读:
    eclipse使用svn
    yum安装mysql
    spring中aop使用
    mybatis定义拦截器
    横扫页面的三大标签
    springmvc日期格式化
    springmvc笔记
    springboot跳转jsp页面
    常用网址
    CentOS Android Studio桌面图标的创建
  • 原文地址:https://www.cnblogs.com/qwn34/p/13771440.html
Copyright © 2011-2022 走看看