奇怪的电梯

奇怪的电梯奇怪的电梯【问题描述】某栋大楼有一种很奇怪的电梯。大楼的每一层楼都可以停电梯,而且第i层楼(1≤i<N)上有一个数字K(≤K≤N)电梯只有四个按钮:开、关、上、下。上、下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:33125代表了Ki(K1=3,K2=3,…),从一层开始。在一层按“上”可以到4层,按“下”是不起作用的,因为没有-2层。那么从A层到B层至少要按几次按钮呢?【输入格式】第1行为3个用1个空格隔开的正整数,表示N、A、B(l≤N≤200,1≤

大家好,又见面了,我是你们的朋友全栈君。

奇怪的电梯

【问题描述】

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

【输入格式】

第1行为3个用1个空格隔开的正整数,表示N、A、B(l≤N≤200,1≤A,B≤N)。

第2行为N个用1个空格隔开的正整数,表示K。

【输出格式】

一行一个数,表示最少按键次数。若无法到达,则输出“-1”。

【输入样例】

5 1 5
3 3 1 2 5

【输出样例】

3

思路
学校网站的一道题
鸽了几天过端午去了
今天水一道最简单的标记

代码

#include<bits/stdc++.h>//实用头文件 
using namespace std;
int n,m,k,s=(1<<30);
int a[201];
bool b[201];
inline void dfs(int now,int sum)
{ 
   
	if(now==k)
	{ 
   
		s=min(s,sum);
	}
	else if(sum<=s)
	{ 
   
		b[now]=1;//标记当前楼层 
		if(now+a[now]<=n && b[now+a[now]]==0)//上,要是没去过 
		{ 
   
			dfs(now+a[now],sum+1);
		}
		if(now-a[now]>=1 && b[now-a[now]]==0)//下,也是没去过 
		{ 
   
			dfs(now-a[now],sum+1);
		}
		b[now]=0;//取消标记 
	}
}
int main()
{ 
   
	ios::sync_with_stdio(false);
	cin.tie(0);
	int i,j;
	cin>>n>>m>>k;
	for(i=1;i<=n;i++)
	{ 
   
		cin>>a[i];
	}
	b[m]=1;//第m层需要标记 
	dfs(m,0);
	if(s==(1<<30))
	{ 
   
		cout<<-1<<endl;
	}
	else
	{ 
   
		cout<<s<<endl;
	}
	return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130357.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • php冒泡排序

    php冒泡排序

    2021年10月15日
    43
  • 一点ASMM总结

    一点ASMM总结Oracle的SGA内存结构:BufferCache数据库高速缓存DefaultPool默认的缓冲池,大小由DB_CACHE_SIZE决定KeepPool…

    2022年6月6日
    39
  • /etc/fstab文件的详解

    /etc/fstab文件的详解一、/etc/fstab文件的作用         磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载。        系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要每次开机启动之后手动进行挂载了。 二、挂载的限制  在说明这…

    2022年10月27日
    0
  • java 开源 报表_6款常用的Java开源报表制作工具

    java 开源 报表_6款常用的Java开源报表制作工具原标题:6款常用的Java开源报表制作工具1.Aspose.CellsforJasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其他IDE报表工具一样来制作报表,支持PDF、HTML、XLS、CSV和XML文件输出格式,是当前Java开发者最常用的报表工具。<Aspose.CellsforJasperReports试用版下载>2.BIRT…

    2022年10月20日
    0
  • 开源 微商分销系统 php,[PHP程序] 微商新零售分销平台源码Thinkphp内核 产品营销推广神器…

    开源 微商分销系统 php,[PHP程序] 微商新零售分销平台源码Thinkphp内核 产品营销推广神器…源码介绍一个新零售的派单工具,有了平台,会让客户主动加你买货,100%成交,还会积极帮你转介绍,让你不仅仅获得派单,还能建立自己的商友圈,积累强大的人脉。平台的机制中一共分为13个商友星级,从一星到十三星,每升一星就会获得大量的平台派单,升到13星一共可获得百万笔零售订单。平台没有行业限制,无论你是微商,电商还是实体,无论你是卖衣服、化妆品还是食品,都可以使用平台。同行可以合作,异业可以联盟,不用…

    2022年5月17日
    33
  • this指针的原理

    this指针的原理讲解this指针的原理是个很复杂的问题,如果我们从javascript里this的实现机制来说明this,很多朋友可能会越来越糊涂,因此本篇打算换一个思路从应用的角度来讲解this指针,从这个角度理解this指针更加有现实意义。  下面我们看看在java语言里是如何使用this指针的,代码如下:复制代码publicclassPerson{privateStringname;priva

    2022年5月17日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号