1. 程式人生 > >JSK 18: 跳躍遊戲

JSK 18: 跳躍遊戲

col 技術分享 hid 輸出 false algorithm top ostream color

給定一個非負整數數組,假定你的初始位置為數組第一個下標。 數組中的每個元素代表你在那個位置能夠跳躍的最大長度。 請確認你是否能夠跳躍到數組的最後一個下標。 例如:$A = [2,3,1,1,4]$ 能夠跳躍到最後一個下標,輸出true; $A = [3,2,1,0,4]$ 不能跳躍到最後一個下標,輸出false。 第一行輸入一個正整數 $n(1 \leq n \leq 500)$,接下來的一行 $n$ 個整數,輸入數組 $A_i$。 如果能跳到最後一個下標,輸出true,否則輸出false。 技術分享圖片
#include <iostream>
#include 
<string> #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #include <vector> #include <queue> #include <deque> #include <map> #define range(i,a,b) for(int i=a;i<=b;++i) #define LL long long #define rerange(i,a,b) for(int i=a;i>=b;--i) #define
fill(arr,tmp) memset(arr,tmp,sizeof(arr)) using namespace std; int n,num[505],dp[505]; void init() { cin>>n; range(i,0,n-1)cin>>num[i]; } void solve(){ bool ans=false; if(n==1)ans=true; int pos=0; while(pos<n-1){ pos+=num[pos]; if(!num[pos]&&pos!=n-1
)break; if(pos==n-1){ans=true;break;} } cout<<(ans?"true":"false")<<endl; } int main() { init(); solve(); return 0; }
View Code

JSK 18: 跳躍遊戲