zoukankan      html  css  js  c++  java
  • [题解]洛谷P1135 奇怪的电梯

    思路:

     DFS会TEL  

      广度优先搜索

      1.每次取当前楼层上下两种情况,判断是否合法

      2.因为是bfs所以如果遍历到一个节点已经走到过则是无意义的

      3.所以path只要直接更改即可

    代码:

    #include<cstdio>
    #include<queue>
    using namespace std;
    
    int ans=0,k[201],a,b,n,vis[201]={0},found=0,path[10010];
    
    void bfs(){
        int d[201]={0}; 
        queue<int>q;
        q.push(a);
        //path[a]=-1;
        while(!q.empty()){
            int nn=q.front();q.pop();
            int up=nn+k[nn],down=nn-k[nn];
            if(nn==b){printf("%d",d[b]);found=1;break;}
            if(vis[up]==0&&up>=1&&up<=n){
                vis[up]=1;q.push(up);d[up]=d[nn]+1;
            }
            if(vis[down]==0&&down>=1&&down<=n){
                vis[down]=1;q.push(down);d[down]=d[nn]+1;
            }
        }
    }
    
    int main(){
        scanf("%d%d%d",&n,&a,&b);
        for(int i=1;i<=n;i++)
            scanf("%d",&k[i]);
        bfs(); 
        if(!found)printf("-1");
    } 
    本篇文章为SHINE_GEEK原创,转载请注明来源!
    written_by:SHINE_GEEK

    -------------------------------------
    签名:自己选的路,跪着也要走完;理想的实现,需要不懈奋斗!
    -------------------------------------
  • 相关阅读:
    跨域问题注解解决
    跳出循环到指定位置
    idea model管理
    maven 取本地jar
    注解 元注解
    手动打jar包到maven
    sonar搭建
    jmockit、junit
    注解
    虚拟机指令
  • 原文地址:https://www.cnblogs.com/sjrb/p/9865241.html
Copyright © 2011-2022 走看看