贪心算法-跳跃游戏二
2018-06-18 03:58:43来源:未知 阅读 ()
给定一个非负整数数组,假定你的初始位置为数组第一个下标。
数组中的每个元素代表你在那个位置能够跳跃的最大长度。
你的目标是到达最后一个下标,并且使用最少的跳跃次数。
例如:
A=[2,3,1,1,4],到达最后一个下标的最少跳跃次数为 2。(先跳跃 1 步,从下标 0 到 1,然后跳跃 3 步,到达最后一个下标。一共两次)
输入格式
第一行输入一个正整数 n(1≤n≤100) ,接下来的一行,输入 n 个整数,表示数组 A。
输出格式
最后输出最少的跳跃次数。
样例输入
5 3 1 1 1 1
样例输出
2
分析:
通过上面例题分析,类似于贪心算法,每次跳一步后,步数cnt++,然后判断下次跳的最远的距离,直到到达s[n-1]为止,如下图所示:
代码如下:
#include<stdio.h> 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<n;i++) { scanf("%d",&s[i]); } bfs(0); printf("%d",ct); //打印步数 return 0; }
下节便来讲动态规划,链接:http://www.cnblogs.com/lifexy/p/7550159.html
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:WSDL语法
下一篇:串口实现FIFO接受数据(V2)
- C++ rand函数 2020-06-10
- OpenCV开发笔记(五十九):红胖子8分钟带你深入了解分水岭 2020-05-24
- 类欧几里得算法 2020-05-16
- 算法笔记刷题6 ( PAT 1003我要通过 ) 2020-05-08
- 无法正确通过算法题目都是哪些原因造成的? 2020-04-05
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash