計蒜客題目 跳躍遊戲
阿新 • • 發佈:2019-01-24
給定一個非負整數陣列,假定你的初始位置為陣列第一個下標。
陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。
請確認你是否能夠跳躍到陣列的最後一個下標。
例如:A = [2,3,1,1,4]A=[2,3,1,1,4] 能夠跳躍到最後一個下標,輸出true
;
A = [3,2,1,0,4]A=[3,2,1,0,4] 不能跳躍到最後一個下標,輸出false
。
輸入格式
第一行輸入一個正整數 n(1 \leq n \leq 500)n(1≤n≤500),接下來的一行 nn 個整數,輸入陣列 A_iAi。
輸出格式
如果能跳到最後一個下標,輸出true
,否則輸出false
。
樣例輸入
5 2 0 2 0 1
樣例輸出
true
#include<iostream> using namespace std; int main() { unsigned long n,k=0; cin>>n; unsigned long a[n]; for(int i=0;i<n;i++){ cin>>a[i]; } while((k<n)&&(a[k]!=0)){ k=k+a[k]; } if(k>=(n-1)) cout<<"true"; else cout<<"false"; return 0; }
思路:在沒到達最後一個點之前,能跳多遠跳多遠。受問答區啟發,最後的判斷條件只需能否超過陣列總長即可,不必恰好等於總長。這麼一看給出的用例也很賊,都是恰好跳到最後一個的,導致我最後一組測試總是不過……
筆記:short是半個word長,int是一個word長,long是一個或者二個word長。