题目描述
渣渣辉非常喜欢跳来跳去。
但是现在他遇到了一个艰巨的任务。
给定一个由正整数构成的一维地图,该图上某一点的值代表在该点时可以跳跃的最大长度。
渣渣辉想要用最少的跳跃次数跳到地图的最右边一个位置。
(保证可以到达终点。)
输入
输入包括多组测试样例。
对于每个测试样例:
第一行输入为正整数 N ,代表一维地图的大小。(0 <= N <= 100)。
第二行输入为 N 个正整数,为地图该点可以跳跃的最大长度 K 。(0 <= K <= 100)。
输出
对于每一个测试样例输出一行,结果为跳跃到最右一个位置的最少跳跃次数。
样例输入
5
2 3 1 1 4
6
2 3 1 4 2 4
样例输出
2
3
#include <iostream>
#include <vector>
int minJumpCount(std::vector<int>& nums) {
int curPos = 0;
int jumpCount = 0;
int maxPos = 0;
for (int i = 0; i < nums.size() - 1; i++) {
if (i + nums[i] > maxPos) {
maxPos = i + nums[i];
}
if (curPos == i) {
curPos = maxPos;
jumpCount++;
}
}
return jumpCount;
}
int main() {
int n;
while (std::cin >> n) {
std::vector<int> nums(n);
for (int i = 0; i < n; i++) {
std::cin >> nums[i];
}
int result = minJumpCount(nums);
std::cout << result << std::endl;
}
return 0;
}