博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
贪心算法-跳跃游戏二
阅读量:6639 次
发布时间:2019-06-25

本文共 797 字,大约阅读时间需要 2 分钟。

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

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

你的目标是到达最后一个下标,并且使用最少的跳跃次数。

例如:

 A=[2,3,1,1,4],到达最后一个下标的最少跳跃次数为 2。(先跳跃 1 步,从下标 0 到 1,然后跳跃 3 步,到达最后一个下标。一共两次)

输入格式

第一行输入一个正整数 n(1n100) ,接下来的一行,输入 n 个整数,表示数组 A。

输出格式

最后输出最少的跳跃次数。

样例输入

53 1 1 1 1

样例输出

2

分析:

 通过上面例题分析,类似于贪心算法,每次跳一步后,步数cnt++,然后判断下次跳的最远的距离,直到到达s[n-1]为止,如下图所示:

 

代码如下:

#include
int n,s[10000]={
0},ct=0; int bfs(int i) { int k,j=0,l,max=0; if(i>=n-1) return 0; //找到便退出 k=s[i];ct++; if(i+k>=n-1) return 0; //找到便退出 for(l=i+1;l<=i+k;l++) //for()找到下次能跳到最远的距离 { if(max<=l+s[l]) //更新数据 { j=l;max=l+s[l]; } } bfs(j); //跳到最远的数组里 } int main() { int i; scanf("%d",&n); for(i=0;i

 

 下节便来讲动态规划,链接:

 

 

转载地址:http://cravo.baihongyu.com/

你可能感兴趣的文章
python SMTP邮件发送
查看>>
java中的BigDecimal和String的相互转换
查看>>
Android中Adapter总结
查看>>
数据解析:从某种格式的数据中提取自己所需的数据
查看>>
ArrayList源码深度解析
查看>>
关爱通用户登录支付接口实例
查看>>
angularJS一个比较好的分页地址
查看>>
(转)CWnd与HWND的区别与转换
查看>>
豆瓣有无验证码登陆+selenium
查看>>
android:sharedUserId
查看>>
简单的Windows 服务的安装和卸载
查看>>
IOS开发——正则表达式验证手机号、密码
查看>>
VC++ 内存机理的个人理解(一)——地址和指针的关系
查看>>
QT+VS
查看>>
SQL2008安装详细教程
查看>>
获得驱动器信息卷设备&&Ring3得到磁盘文件系统(NTFS WIN10)
查看>>
js 事件点击 显示 隐藏
查看>>
java基础:4.2 对象和类(二)、数据域封装、this
查看>>
1118 实验三 有限自动机的构造与识别
查看>>
Ubuntu16.04使用Tarball安装ntp
查看>>