洛谷P1135 题解:奇怪的电梯
发布时间
阅读量:
阅读量
洛谷P1135 奇怪的电梯 题解(C++)
题目
某日,我做了一个奇特的梦,梦中出现了一部非常特别的电梯。这栋大楼的每一层都可以停靠电梯,而第i层(1 ≤ i ≤ N)上有一个数字K_i(0 ≤ K_i ≤ N)。电梯共有四个按钮:开启、关闭、向上和向下。电梯上下移动的层数由当前所在楼层对应的数字决定。当然,如果无法实现相应操作,对应的按钮将无法使用。例如:3, 3, 1, 2, 5代表K_i(K_1=3,K_2=3,……),从1楼开始。在1楼时,按下“向上”按钮可到达4楼,而按下“向下”则无效,因为不存在-2楼。那么从A楼到达B楼至少需要按多少次按钮呢?
输入格式
共两行。
第一行为三个用空格隔开的正整数,表示N、A、B(1≤N≤200,1≤A,B≤N)。
第二行为N个用空格隔开的非负整数,表示K_i。
输出格式
一行内容,即最少按键次数;若无法抵达目标楼层,则输出−1。
输入输出样例
输入 #1
5 1 5
3 3 1 2 5
输出 #1
3
思路
此问题实际上可以通过应用BFS(广度优先搜索)算法来解决,且实现过程相对简便。
接下来对示例进行说明:
