計蒜客————跳躍遊戲二
阿新 • • 發佈:2019-02-03
- 30.18%
- 1000ms
- 65536K
給定一個非負整數陣列,假定你的初始位置為陣列第一個下標。
陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。
你的目標是到達最後一個下標,並且使用最少的跳躍次數。
例如:
A=[2,3,1,1,4],到達最後一個下標的最少跳躍次數為 2。(先跳躍 1 步,從下標 0 到 1,然後跳躍 3 步,到達最後一個下標。一共兩次)
輸入格式
第一行輸入一個正整數 n(1≤n≤100) ,接下來的一行,輸入 n 個整數,表示陣列 A。
輸出格式
最後輸出最少的跳躍次數。
樣例輸入
5 3 1 1 1 1
樣例輸出
2
模擬每走一步最大能走到哪裡,最小就是每次預設只向前一步.
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int main() { int n; while(~scanf("%d",&n)) { int in[108],MAX=1; for(int i=1; i<=n; i++) scanf("%d",&in[i]); for(int i=1;; i++) { if(MAX>=n) { printf("%d\n",i-1); break; } int ma=-1; for(int j=i; j<=MAX; j++) ma=max(j+in[j],ma); MAX=max(MAX,ma); } } return 0; }