題目大意
給定一個正整數數組,最大為100個成員,從第一個成員開始,走到數組最后一個成員最少的步驟數。第一步必須從第一元素開始,1<=步長<len/2, 第二步開始以所在成員的數字走相應的步數,如果目標不可達返回-1,只輸出最少的步驟數。
樣例輸入
7 5 9 4 2 6 8 3 5 4 3 9
樣例輸出
2
說明
第一步:第一個可選步長選擇2,第一個成員7走第2個成員,第二步,第2個成員為9,經過9個成員到最后
代碼實現
#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;
}
個人博客: