题解: 动态规划问题
题目链接 http://exam.upc.edu.cn/problem.php?id=2707&csrf=Wc2LX9hWoq953nA9GeQCEbfN44TcZDMc
把mapp中记录当前的步数,初始化时记录为最大值, 当每走到一步时,都要考虑从当前一步的下一步开始,一直到从当前一步能够到达的位置求最小值。
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
const int maxn = 99999999;
int mapp[5050],a[5050];
int main()
{
int n;
int i,j;
scanf("%d",&n);
for (i=1;i<=n;i++)
{
scanf("%d",&a[i]);
mapp[i]=maxn;
}
mapp[1]=0;
for (i=1;i<=n;i++)
for (j=i+1;j<=i+a[i];j++)
mapp[j]=min(mapp[j],mapp[i]+1);
printf("%d\n",mapp[n]);
return 0;
}