Java教程

P1135 奇怪的电梯

本文主要是介绍P1135 奇怪的电梯,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

吐槽

第一道同时用BFS和DFS两种方法做出来的题目

题目

 

 

BFS

最大的注意点就是判断是否经历过该楼层

#include<bits/stdc++.h>
using namespace std;
int n,a,b;
int dis[201],f[201];
queue<int> q;
bool check(int x){
    return x>=1&&x<=n;
}
void bfs()
{
    int t;
    while(!q.empty()){
        int p=q.front();
        q.pop();
        if(p==b){
            cout<<dis[b];
            return;
        }
        t=p+f[p];
        if(check(t)&&dis[t]==0){//注意进行判断是否已经经历过这个楼层
            dis[t]=dis[p]+1;
            q.push(t);
        }
        t=p-f[p];
        if(check(t)&&dis[t]==0){
            dis[t]=dis[p]+1;
            q.push(t);
        }
    }
    cout<<-1;
}

int main()
{
    cin>>n>>a>>b;
    for (int i = 1; i <= n; i++){
        cin>>f[i];
    }
    q.push(a);
    dis[a]=0;
    bfs();
    return 0;
}

DFS

 

这篇关于P1135 奇怪的电梯的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!