题目:给定一个正整数数组,最大为100个成员,从第一个成员开始,走到数组最后一个成员最少的步骤数,第一步必须从第一个元素开始,1<=步长<len/2,第二步开始以所在成员的数字走相应的步数,如果目标不可达返回-1,只输出最少的步骤数量。
输入:由正整数组成的数组,以空格分隔,数组长度小于100,请自行解析数据数量。
输出:正整数,表示最少的步数,如果不存在输出-1.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String str=in.nextLine();
String[] arr=str.split(" ");
int min=1;//最少步数
int index=0;
int start=arr.length-1;//起始点
while(start>=arr.length/2) {//目的是在数组后半段中,找出能一步到达数组尾部start的数,如果有多个则找出数组最前面的
for(int i=start;i>=0;i--) {
if(Integer.parseInt(arr[i])==(start-i)) {
index=i;
; }
}
start=index;
min+=1;
}
if(index==0)
min=-1;
System.out.println(min);
}
}
输入:
7 5 9 4 2 6 8 3 5 4 3 9
输出:
2