题目:给定一个正整数数组,最大为100个成员,从第一个成员开始,走到数组最后一个成员最少的步骤数,第一步必须从第一个元素开始,1<=步长<len/2,第二步开始以所在成员的数字走相应的步数,如果目标不可达返回-1,只输出最少的步骤数量。
输入:由正整数组成的数组,以空格分隔,数组长度小于100,请自行解析数据数量。
输出:正整数,表示最少的步数,如果不存在输出-1.
样例:
7 5 9 4 2 6 8 3 5 4 3 9
2
package org.drz;
import java.util.Scanner;
public class Step {
public static int step(int index, int level, String[] arr) {
if(index == arr.length - 1) {
return level;
}
if (index > arr.length - 1) {
return -1;
}
int nextIndex = Integer.parseInt(arr[index]) + index;
return step(nextIndex, level + 1, arr);
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNextLine()) {
String str = input.nextLine();
String[] arr = str.split(" ");
if(arr.length/2 <= 1){
System.out.println(-1);
}
int min = 1;
int second = Integer.MAX_VALUE;
for (int first = 1; first <= arr.length / 2; first++) {
int ret = step(Integer.parseInt(arr[first]),0,arr);
if (ret < second) {
second = ret;
} else {
continue;
}
}
if (second > -1) {
min += second;
System.out.println(min);
} else {
System.out.println(-1);
}
}
input.close();
}
}