题目描述
输入
第一行输入一个正整数N(5≤N≤100),N表示河面上的木桩个数
第二行输入N个正整数(1≤正整数≤1000),表示每个木桩上的数字,正整数之间以一个空格隔开(输入的正整数顺序为木桩的排列顺序,第一个正整数为第一个木桩上的数字)
输出
输出一个整数,表示青蛙最少需要跳跃几次可到达最后一个木桩
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 107;
int n, a[N], dp[N];
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
for (int i = 0; i < n; i++)
dp[i] = 99;
dp[0] = 0;
for (int i = 0; i < n; i++)
for (int j = i+1; j <= i+a[i]; j++)
if (j < n)
dp[j] = min(dp[j], dp[i] + 1);
printf("%d\n", dp[n-1]);
return 0;
}