输入n表示数组元素个数;
数组中的每个元素表示在该位置能跳跃的最大步数。
求最小跳跃步数
#include <iostream>
#include<math.h>
#include<cstdio>
#include<algorithm>
using namespace std;
#define N 1000
int A[N];
int minsteps(int A[], int n) {
int dp[n];
for(int j=0;j<n;j++){
dp[j]=0;
}
int i;
for(i=0;i<n-1;i++){
int k;
int maxlen=i+A[i];
for(k=i+1;k<=maxlen;k++){
if(dp[k]!=0)
{dp[k]=min(dp[i]+1,dp[k]);}
else{
dp[k]=dp[i]+1;
}
}
}
return dp[n-1];
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>A[i];
}
int num=minsteps(A,n);
cout<<num<<endl;
}