栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 奇怪的电梯

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 奇怪的电梯

 个人简介

大家好,我是3月份新人榜排名第三的 ༺Blog༒Hacker༻
支持我:点赞+收藏⭐️+留言
格言:༺永做优质༒programmer༻

奇怪的电梯

【问题描述】

❄️大楼的每一层楼都可以停电梯,而且第 i i i层楼 ( 1 < = i < = N ) (1<=i<=N) (1<=i<=N)上有一个数字 K i ( 0 < = K i < = N ) K_i(0<=K_i<=N) Ki​(0<=Ki​<=N)。电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。

❄️例如:$3 3 1 2 5
代 表 了 代表了 代表了K_i(K_1=3,K_2=3,……)$,从一楼开始。在一楼,按“上”可以到 4 4 4楼,按“下”是不起作用的,因为没有 − 2 -2 −2楼。那么,从A楼到B楼至少要按几次按钮呢?

【输入格式】

❄️输入文件共有二行,第一行为三个用空格隔开的正整数,表示 N , A , B ( 1 ≤ N ≤ 200 , 1 ≤ A , B ≤ N ) N,A,B(1≤N≤200, 1≤A,B≤N) N,A,B(1≤N≤200,1≤A,B≤N),第二行为 N N N个用空格隔开的正整数,表示 K i K_i Ki​。

【输出格式】

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

【输入样例】

5 1 5
3 3 1 2 5

【输出样例】

3
CODE
#include
using namespace std;
typedef struct{
    int x;
    int y;
}z;
queue q;
int n,a,b;
int s[1000];
int t[1000]={0};
int main()
{
    z e1,e2;
    int i;
    cin>>n>>a>>b;
    for(i=1;i<=n;++i)
	{
    	cin>>s[i];
	}
    e1.x=a;
    e1.y=0;
    q.push(e1);
    t[a]=1;
    while (!q.empty())
	{
        e2=q.front();
        q.pop();
        if(e2.x==b)
		{
			break;
		}
        i=e2.x+s[e2.x];
        if(i<=n && t[i]==0)
		{
            e1.x=i;
            e1.y=e2.y+1;
            q.push(e1);
            t[i]=1;
        }
        i=e2.x-s[e2.x];
        if(i>=1 && t[i]==0){
            e1.x=i;
            e1.y=e2.y+1;
            q.push(e1);
            t[i]=1;
        }
    }
    if(e2.x==b)
	{
		cout<
    	cout<<-1;
	}
	return 0;
}
朋友们,点赞是我更新的动力,明天再见,拜拜!!!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/867151.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号