天生我材必有难,千金散尽还债来 • 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
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您是本系统的第位访问者
评论:
请先登录,才能进行评论