华为机试步数问题java版

题目:给定一个正整数数组,最大为100个成员,从第一个成员开始,走到数组最后一个成员最少的步骤数,第一步必须从第一个元素开始,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();
    }
}

你可能感兴趣的:(编程训练)