1. 程式人生 > >計蒜客————跳躍遊戲二

計蒜客————跳躍遊戲二

  •  30.18%
  •  1000ms
  •  65536K

給定一個非負整數陣列,假定你的初始位置為陣列第一個下標。

陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。

你的目標是到達最後一個下標,並且使用最少的跳躍次數。

例如:

A = [2,3,1,1,4]A=[2,3,1,1,4],到達最後一個下標的最少跳躍次數為 22。(先跳躍 11 步,從下標 00 到 11,然後跳躍 33 步,到達最後一個下標。一共兩次)

輸入格式

第一行輸入一個正整數 n(1 \le n \le 100)n(1n100) ,接下來的一行,輸入 nn 個整數,表示陣列 AA

輸出格式

最後輸出最少的跳躍次數。

樣例輸入

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;
}