zoukankan      html  css  js  c++  java
  • 计蒜客 走迷宫2

    解析

    bfs模板题,但是要注意边界和下走的的点是否合法的判断。

    #include<bits/stdc++.h>
    using namespace std;
    char mp[1001][1001];
    int record[1001][1001];
    int changey[5]={0,1,0,-1,0};
    int changex[5]={0,0,1,0,-1};//方向 
    queue<int> xx,yy;
    int main()
    {
        int n,m;
        cin>>n
        >>m;
        int endx,endy; 
        int beginx,beginy;//分别记录起点,终点 
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                cin>>mp[i][j];//S起点 T终点 #墙 .草(路) 
                if(mp[i][j]=='S')
                {
                    xx.push(i);
                    beginx=i;
                    yy.push(j);
                    beginy=j;
                }
                if(mp[i][j]=='T')
                {
                    endx=i;
                    endy=j;
                }
            }
        }
        while(!xx.empty()&&!yy.empty())
        {
            int nowx=xx.front();
            int nowy=yy.front();
            xx.pop();
            yy.pop();
            int newx,newy;
            for(int i=1;i<=4;i++)
            {
                newx=nowx+changex[i];
                newy=nowy+changey[i];
                if(newx<1||newx>n) continue;
                if(newy<1||newy>m) continue;//超出地图 
                if(mp[newx][newy]=='#') continue;//
                if(newx==beginx&&newy==beginy) continue;//不是起点(起点也是0所以要特判) 
                if(record[newx][newy]!=0) continue;//已经走过
                record[newx][newy]=record[nowx][nowy]+1;//从上一个点+1; 
                xx.push(newx);
                yy.push(newy);
            }
        }
        if(record[endx][endy]==0) cout<<"-1"<<endl;
        else cout<<record[endx][endy]<<endl;
        return 0;
    }
  • 相关阅读:
    Struts之上传
    Struts之准备工作
    前端--关于背景、浮动和定位
    javascript学习目录
    audio和video元素
    js实现动态操作table
    jquery全选、反选、全不选
    js实现页面跳转
    10 个非常有用的 AngularJS 框架
    JavaScript 语言基础知识点总结(思维导图)
  • 原文地址:https://www.cnblogs.com/KyleDeng/p/9284372.html
Copyright © 2011-2022 走看看