贪心算法典型应用之——以最小前进次数到达数组最后一个位置

1、题目说明:

输入一个所有元素都是自然数的数组,初始状态你的位置位于第1个元素,每个元素的位置表示1步,当前所在位置的元素数值表示你下一次前进能够移动的最大步数,你的目标是以最小的前进次数从数组的第一个元素移动到数组的最后一个元素位置,你需要输出每次前进的步数。

2、举例:

输入 : 2 3 1 1 4

输出 : 1 3

 3、思路分析:

首先,我们通过分析题意,可以看出该题可以用贪心算法的思想来解。

思路:贪心算法
          从第一个数开始, 寻找可以一个可以跳最远的点;
         例1:3 1 2 4 1 
         1.从第一个位置0,可以跳到位置1和位置2和位置3;
         2.如果跳到位置1,那么最远就可以跳到位置(1+1);
         3.如果跳到位置2,那么最远就可以跳到位置(2+2);
         4.如果跳到位置3,那么最远就可以跳到位置(3+4);
         5.故选择跳到位置3 ,重复1.2.3步;
         
         算法分析:
         1.如果选择跳到位置3 ,就无法跳到位置2和位置3, 那么会不会因此错过最优解? 答:不会!
         2.因为任意位置1和位置2能到达的位置, 位置3都可以到达;
         3.故不会错过最优

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值