搜狐:袋鼠過河
阿新 • • 發佈:2018-11-24
袋鼠過河
dp用來儲存跳了多少步
#include<iostream> #include<algorithm> #include<cstring> using namespace std; #define FOR(I,N) for(int i=0;i<n;++i) #define min(x,y) (x<y?x:y) const int maxn = 1e4+5; #define INF 1<<30 int arr[maxn]; int dp[maxn]; int main() { int n,flag; while(cin>>n) { FOR(I,N) cin>>arr[i]; for(int i=0;i<=n;++i) { dp[i]=INF; } dp[0]=1; flag=1; FOR(I,N) { if(dp[i]==INF) { flag=0; break; } for(int j=i+1;j<=i+arr[i];++j) { dp[j]=min(dp[i]+1,dp[j]); /* cout<<i<<endl; FOR(I,N) { cout<<dp[i]<<" "; } cout<<endl; */ } } if(flag) cout<<dp[n]-1<<endl; else cout<<"-1"<<endl; } return 0; }