P1135 奇怪的电梯(BFS+待补)

简介: 算法

飞机票


题意:16.png

思路:

超级经典的一道题,有多种解法


BFS


开个标记数组,用队列,然后就判断找下去,找到就跳出,就能保证用的次数最少,没找到则是-1。

#include<bits/stdc++.h>
using namespace std;
queue<pair<int ,int >>mo;
const int maxn=20005;
int a[maxn];
int ans[maxn];
int sf[maxn];
int n;
bool jg(int d){
    if(d>=1&&d<=n){
        return true;
    }
    return false;
}
int main()
{
    memset(ans,-1,sizeof(ans));
    int i,j,m,f;
    cin>>n>>m>>f;
    rep(i,1,n){
        cin>>a[i];
    }
    mo.push(make_pair(m,a[m]));
    sf[m]=1;
    if(m==f){
        cout<<0<<endl;
        return 0;
    }
    while(!mo.empty()){
        int x1=mo.front().first;
        int yy=mo.front().second;
        int ss=mo.front().first+yy;
        int xx=mo.front().first-yy;
        mo.pop();
        if(jg(ss)&&sf[ss]==0){
            sf[ss]=1;
            ans[ss]=ans[x1]+1;
            mo.push(make_pair(ss,a[ss]));
            if(ss==f) break;
        }
         if(jg(xx)&&sf[xx]==0){
            sf[xx]=1;
            ans[xx]=ans[x1]+1;
            mo.push(make_pair(xx,a[xx]));
            if(ss==f) break;
        }
    }
    if(ans[f]!=-1)
        cout<<ans[f]+1<<endl;
    else
        cout<<-1<<endl;
}
相关文章
|
7月前
【每日一题Day313】LC2511最多可以摧毁的敌人城堡数目 | 模拟
【每日一题Day313】LC2511最多可以摧毁的敌人城堡数目 | 模拟
41 0
|
6月前
|
存储 物联网
【洛谷 P1135】奇怪的电梯 题解(广度优先搜索)
这是一个关于奇怪电梯的编程问题摘要: - 电梯在每层停,且每层有特定数字 $K_i$ 决定上/下按钮的功能。 - 目标是从 $A$ 楼到 $B$ 楼,求最少按键次数,若无法到达则输出 `-1`。 - 输入包括 $N$(楼层数)、$A$(起点)和 $B$(终点),以及每层的 $K_i$ 数字。 - 使用广度优先搜索(BFS)解决,通过队列存储访问过的楼层,避免重复并计算步数。 - 当到达目标楼层时返回步数,队列空时返回 `-1`。
45 0
|
7月前
【错题集-编程题】孩子们的游戏(圆圈中最后剩下的数)(约瑟夫环)
【错题集-编程题】孩子们的游戏(圆圈中最后剩下的数)(约瑟夫环)
|
7月前
|
算法 测试技术 C#
【逆向思考 】【拓扑排序】1591. 奇怪的打印机 II
【逆向思考 】【拓扑排序】1591. 奇怪的打印机 II
|
7月前
|
算法 测试技术 C++
【动态规划】【记忆化搜索】【C++算法】664. 奇怪的打印机
【动态规划】【记忆化搜索】【C++算法】664. 奇怪的打印机
|
7月前
【每日一题Day314】LC1921消灭怪物的最大数量 | 贪心+排序
【每日一题Day314】LC1921消灭怪物的最大数量 | 贪心+排序
47 0
leetcode 1921. 消灭怪物的最大数量(每日一题)
leetcode 1921. 消灭怪物的最大数量(每日一题)
83 0
洛谷P1135 奇怪的电梯——广搜
洛谷P1135 奇怪的电梯——广搜
103 0
|
存储 移动开发 算法
C++/PTA 关于深度优先搜索和逆序对的题应该不会很难吧这件事
背景知识 深度优先搜索与 DFS 序 深度优先搜索算法(DFS)是一种用于遍历或搜索树或图的算法。以下伪代码描述了在树 T 上进行深度优先搜索的过程
117 0
|
存储
Leetcode-每日一题1210. 穿过迷宫的最少移动次数(BFS)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_46618592/article/details/128890280?spm=1001.2014.3001.5501
118 0
Leetcode-每日一题1210. 穿过迷宫的最少移动次数(BFS)