1221

天生我材必有难,千金散尽还债来  •  7个月前


王码编程 OJ 首页 问题列表 比赛 社团 排行榜 记录 新闻通知 课程 帮助 暂无头像 汉儿尽做胡儿语,却向城头笑汉儿。 2406 - 奇怪的电梯 通过次数

40

提交次数

129

旧版界面 时间限制 : 1 秒 内存限制 : 128 MB 大楼的每一层楼都可以停电梯,而且第 i 层楼(1<=i<=N)上有一个数字 Ki(0<=Ki<=N)。

电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果

不能满足要求,相应的按钮就会失灵。例如:3 3 1 2 5 代表了 Ki(K1=3,K2=3,……),从一

楼开始。在一楼,按“上”可以到 4 楼,按“下”是不起作用的,因为没有-2 楼。那么,

从 A 楼到 B 楼至少要按几次按钮呢?

输入 输入文件共有二行,第一行为三个用空格隔开的正整数,表示 N,A,B(1≤N≤200, 1≤

A,B≤N),第二行为 N 个用空格隔开的正整数,表示 Ki。

输出 输出文件仅一行,即最少按键次数,若无法到达,则输出-1。

样例 输入复制 5 1 5 3 3 1 2 5 输出复制 3 来源 一本通增补1

C++ 1 ​ 2分钟前 Accepted × 提交时间:2023-11-18 17:13:05

运行 ID: 180359

include

include

using namespace std; int main() {

vector<int> j;
int n,a,b;
cin>>n>>a>>b;
if(a==b) {
	cout<<0;
	return 0;
}
for(int k=0; k<n; k++) {
	int c;
	cin>>c;
	j.push_back(c);
}
for(int k=0; k<n; k++) {
	if(a+j[a-1]<=n) {
		a=a+j[a-1];
		//cout<<a<<" "<<j[a-1]<<" ";
		if(a==b) {
			cout<<k+1;
			return 0;
		}
		continue;
	}
	if(a-j[a-1]>=1) {
		a=a-j[a-1];
		//cout<<a<<" "<<j[a-1]<<" ";
		if(a==b) {
			cout<<k+1;
			return 0;
		}
		continue;
	}
}
cout<<"-1";
return 0;

}

© 2019 - 2023王码编程  滇ICP备19007937号-1如果您有任何问题,请联系我们 YNOIer@163.com您是本系统的第位访问者


评论:

666


蛋仔6神  •  24天前

请先登录,才能进行评论