給定一個正整數陣列,設為nums,最大為100個成員,求從第一個成員開始,正好走到陣列最後一個成員,所使用的最少步驟數。
阿新 • • 發佈:2022-03-06
給定一個正整數陣列,設為nums,最大為100個成員,求從第一個成員開始,正好走到陣列最後一個成員,所使用的最少步驟數。
要求:
1、第一步必須從第一元素開始,且1<=第一步的步長<len/2;(len為陣列的長度,需要自行解析)。
2、從第二步開始,只能以所在成員的數字走相應的步數,不能多也不能少, 如果目標不可達返回-1,只輸出最少的步驟數量。
3、只能向陣列的尾部走,不能往回走。
輸出
輸入描述:
由正整陣列成的陣列,以空格分隔,陣列長度小於100,請自行解析資料數量。
輸出描述:
正整數,表示最少的步數,如果不存在輸出-1
輸入
7 5 9 4 2 6 8 3 5 4 3 9
輸出
2
說明
第一步: 第一個可選步長選擇2,從第一個成員7開始走2步,到達9;第二步: 從9開始,經過自身數字9對應的9個成員到最後。
def read_data(): return [int(index) for index in input().split()] nums = read_data() for i in range(1, len(nums) // 2): sum = i count = 1 res = 100 length = len(nums) while sum < length - 1: sum = sum + nums[sum] count= count + 1 if sum == length - 1: res = min(count, res) print(res if res != 100 else -1)