奇怪的电梯

题目

大楼的每一层楼都可以停电梯,而且第i层楼(1iN)上有一个数字 Ki(0KiN) 。电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如: 3,3,1,2,5 代表了 Ki(K1=3,K2=3,) ,从 1 楼开始。在 1 楼,按“上”可以到 4 楼,按“下”是不起作用的,因为没有 2 楼。那么,从 A 楼到 B 楼至少要按几次按钮呢?

代码

#include<bits/stdc++.h>
const int Max=250;
using namespace std;
int f[Max],a[Max],n,p,b;
bool tf[Max];
queue<int>q;
void bfs(){
	tf[p]=true;
	f[p]=0;
	q.push(p);
	while(q.size()>0){
		int u=q.front();q.pop();
		int v=u-a[u];
		if(v>=1 && !tf[v]){
			tf[v]=true;
			f[v]=f[u]+1;
			q.push(v);
		}
		v=u+a[u];
		if(v<=n && !tf[v]){
			tf[v]=true;
			f[v]=f[u]+1;
			q.push(v);
		}
	}
	if(tf[b]) cout<<f[b];else cout<<-1;
}
int main()
{
	cin>>n>>p>>b;
	for(int i=1;i<=n;i++) cin>>a[i];
	bfs();
    return 0;
}
posted @   Euouae  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示