1.題目大意
給定一個(gè)正整數(shù)數(shù)組,最大為100個(gè)成員,從第一個(gè)成員開始,走到數(shù)組最后一個(gè)成員最少的步驟數(shù)。第一步必須從第一元素開始,1<=步長<len/2, 第二步開始以所在成員的數(shù)字走相應(yīng)的步數(shù),如果目標(biāo)不可達(dá)返回-1,只輸出最少的步驟數(shù)。
2.樣例輸入
7 5 9 4 2 6 8 3 5 4 3 9
3.樣例輸出
2
4.說明
第一步:第一個(gè)可選步長選擇2,第一個(gè)成員7走第2個(gè)成員,第二步,第2個(gè)成員為9,經(jīng)過9個(gè)成員到最后
5.代碼實(shí)現(xiàn)
#include <iostream>
#include <array>
constexpr int LENGTH = 100;
int FindFinish(std::array<int, LENGTH> arr, int n)
{
int min = 100;
for (int i = 1; i < n / 2; ++i) {
int path = 0;
for (int j = i; j < n; j += arr[j]) {
++path;
if (j == n - 1) {
min = min < path ? min : path;
break;
}
}
}
if (min == 100) {
return -1;
}
return min;
}
int main(void)
{
std::array<int, LENGTH> arr {};
int index = 0;
while (std::cin.peek() != '\n') {
std::cin >> arr[index++];
}
std::cout << FindFinish(arr, index) << std::endl;
return 0;
}
個(gè)人主頁: