跳跃游戏

给定一个非负整数数组,假定你的初始位置为数组第一个下标。

数组中的每个元素代表你在那个位置能够跳跃的最大长度。

请确认你是否能够跳跃到数组的最后一个下标。

例如: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(1n500),接下来的一行 nn 个整数,输入数组 A_iAi

输出格式

如果能跳到最后一个下标,输出true,否则输出false

样例输入
5
2 0 2 0 1
样例输出
true

解题思路:首先这个题是看是否能跳过去,最简便的方法就是贪心法。我们定义一个变量,用来标记这个数组最大可以跳到哪里去。所以就是每次都是数组元素下标与数组元素的和,如果这个和比最大跳跃的距离大,就证明这个才是现在为止可以跳的最远的。

举例:5,4,2,3,1,0,0,3,6,8

max=0;

第0号元素,可以跳跃的最大距离就是0+5=5;0<=max;max<5;max=5;

第1号元素,可以跳跃的最大距离就是1+4=5;1<=max;max不小于5;max=5;

第2号元素,可以跳跃的最大距离就是2+2=4;2<=max;不小于4;max=5;

第3号元素,可以跳跃的最大距离就是3+3=6;3<=max;max<6;max=6;

第4号元素,可以跳跃的最大距离就是1+4=5;4<=max;max不小于5;max=6;

第5号元素,可以跳跃的最大距离就是0+5=5;5<=max;max不小于5;max=6;

第6号元素,可以跳跃的最大距离就是0+6=6;6<=max;max不小于6;max=6;

第7号元素,可以跳跃的最大距离就是0+5=5;7不小于max;max<5;max=5;

到7号元素就停止了,因为前面没有一个数据能跳到7号元素。


代码如下:

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int count,i,max=0;
Scanner stdin = new Scanner(System.in);  
count=stdin.nextInt();
int []a=new int[1000];
for(i=0;i<count;i++)
{
a[i]=stdin.nextInt();
}
for(i=0;i<count;i++)
{
if(i>max)
       {
           System.out.println("false");
           return;
       }
       if(i+a[i]>max)
           max=i+a[i];
}
System.out.println("true");
}
}








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值