给定一个非负整数数组,假定你的初始位置为数组第一个下标。
数组中的每个元素代表你在那个位置能够跳跃的最大长度。
请确认你是否能够跳跃到数组的最后一个下标。
例如:A=[2,3,1,1,4] 能够跳跃到最后一个下标,输出true
;
A=[3,2,1,0,4] 不能跳跃到最后一个下标,输出false
。
输入格式
第一行输入一个正整数 n(1≤n≤500),接下来的一行 n 个整数,输入数组 Ai。
输出格式
如果能跳到最后一个下标,输出true
,否则输出false
。
样例输入
5 2 0 2 0 1
样例输出
true
python语言:
a=[0]*501
i=maxx=ok=0
n=int(input())
a=input().split(' ')
# print(a)
for i in range(0,n):
if i>maxx:
print("false")
ok=1
break
if i+int(a[i])>maxx:
maxx=i+int(a[i])
if ok==0:
print("true")
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
int count, i, max = 0;
Scanner stdin = new Scanner(System.in);
count = stdin.nextInt();
int[] a = new int[501];
for (i = 0; i < count; i++) {
a[i] = stdin.nextInt();
}
for (i = 0; i < count; i++) {
if (max<i) {
System.out.println("false");
return;
}
if (i + a[i] > max)
max = i + a[i];
}
System.out.println("true");
}
}
思路:
如果存在某一点不能到达后面的点,那肯定不能到达最后的点,输出false,否则输出true