給定一個(gè)正整數(shù)數(shù)組,最大為100個(gè)成員,從第一個(gè)成員開始,走到數(shù)組最后一個(gè)成員最少的步驟數(shù),第一步必須從第一個(gè)元素開始,1<=步長(zhǎng)<len/2,第二步開始以所在成員的數(shù)字走相應(yīng)的步數(shù),如果目標(biāo)不可達(dá)返回-1,只輸出最少的步驟數(shù)量
題目?jī)?nèi)容:給定一個(gè)正整數(shù)數(shù)組,最大為100個(gè)成員,從第一個(gè)成員開始,走到數(shù)組最后一個(gè)成員最少的步驟數(shù),第一步必須從第一個(gè)元素開始,1<=步長(zhǎng)<len/2,第二步開始以所在成員的數(shù)字走相應(yīng)的步數(shù),如果目標(biāo)不可達(dá)返回-1,只輸出最少的步驟數(shù)量。
輸入:由正整數(shù)組成的數(shù)組,以空格分隔,數(shù)組長(zhǎng)度小于100,請(qǐng)自行解析數(shù)據(jù)數(shù)量。
輸出:正整數(shù),表示最少的步數(shù),如果不存在輸出-1。
python代碼:
'''在步長(zhǎng)限制范圍內(nèi),通過(guò)迭代更新當(dāng)前的索引及下一步的步長(zhǎng)'''
#num_arr = input().split(' ') #num_arr = [int(i) for i in num_arr] num_arr = [7,5,9,4,2,6,8,3,5,4,3,9] # 示例 ,輸出為2 N = len(num_arr) if N%2==0: max_step_length = N/2-1 else: max_step_length = N/2 num_list = [] for step in range(1,int(max_step_length)): index_next = step num = 1 while index_next<N: next_step = num_arr[index_next] index_next = index_next + next_step if index_next<N: num+=1 if index_next == N-1: num_list.append(num) # print("step:",step) # print("num_list:",num_list) if index_next>=N: num_list.append(-1) out_num = [ i for i in num_list if i>0] if len(out_num)==0: print(-1) else: print(min(out_num))
代碼通過(guò)率80%, 記錄筆試所遇問(wèn)題,待解決,如有大佬幫忙指正,感激不盡!
posted on 2020-04-11 20:57 貝殼w 閱讀(2704) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)