先看要求

题意理解:如题意所示,但注意 “可以跳跃的最大长度”指的是可跳跃范围!

解题思路:做法有多种,最简单的利用多重嵌套if-else if-else或多重循环嵌套(for、while等)这里就不演示了。

通过贪心法来解决这道题,每次到达一个位置之后,我们都有一个可以选择的跳转范围,如果在这个范围里,我们可以选出最优跳跃路径(即最远可以达到哪个位置),就可以直接抛弃其他路径,进而解决下一步。如此反复,最后我们就能得出最后可以到达数组的哪个位置,因此,我们只要掌握了最后能到达哪个位置,就能知道可不可以达到数组末端了。

思路解决了,但是我们考虑到非负数组中还有一个特殊的存在,即0。可以跳跃范围为0的话,就无法进行跳转了,停在原地。此时分有两种情况,一是我们在前往数组末端的路上遇到了0了,那么我们就不可能达到末尾了,游戏结束,输出false.。二是虽然我们遇到了0,但是我们已经在末尾了,游戏结束,但应该输出true。所以这里需要一个判定处理,

代码部分(带详细注释)

#include <stdio.h>int main(){int i,j,z,index=0,insert=0;int a[5],b[5]={0,0,0,0,0};for(j=0;j<5;j++){scanf("%d",&a[j]);}for(i=0;i<4;i=i+index ){if(a[i] == 0){        //可跳转范围为0,跳转结束if(i!=4){ //当可跳转范围为0,但为最后一个元素,说明已走到末尾break; //跳出循环}elsei=4;}for(j=i+1;j<=a[i];j++){  //将下一步所有可走路径保存在b[]中 例如: 3 2 1 0 4 中第一个元素的下一步 3->2 3->1 3->0b[i]=i+a[i];     // 按照下一步的可走路径将距离值保存在b[]的 例如:3->2 3->1 3->0(随便起的名字)距离值:1+2 2+1 3+0 三者可走距离值一样  }z=sizeof(b) / sizeof(int);for(;z>=0;z--){       //选出最优路径 并记录元素位置即下一跳转(最优) if(insert<b[z]){      //利用for()与if()选出b[]中最大值index = a[z];       //最优路径:当数组下标与数组元素的值之和最大时,可供选择的跳转范围最远insert=b[z];}}}if(i>=4){printf("ture\n");}else printf("false\n");return 0;
}

C语言/跳跃游戏(Jump Game)相关推荐

  1. LeetCode—55.跳跃游戏(Jump Game)——分析及代码(C++)

    LeetCode-55.跳跃游戏[Jump Game]--分析及代码[C++] 一.题目 二.分析及代码 1. 贪心 (1)思路 (2)代码(简洁) (3)代码(高效) (4)结果 三.其他 一.题目 ...

  2. 116 · 跳跃游戏 Jump Game

    116 · 跳跃游戏 Jump Game 描述 Given an array of non-negative integers, you are initially positioned at the ...

  3. LeetCode 55 -- 跳跃游戏 ( Jump Game ) ( C语言版 )

    题目描述 :  解题思路 : 本题目不能一开始从最大长度进行跳跃 , 应该一次次遍历每个数组元素 , 采用贪心法 , max表示每次能够到达的最远距离 , 使用max=max<i+nums[i] ...

  4. C语言——跳跃游戏 II

    题目描述: 给你一个非负整数数组 nums ,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. 假设你总是可以到达 ...

  5. 跳跃游戏 Jump Game 分析与整理

    参考文章 点这儿查看 给定一个非负整数数组,你最初位于数组的第一个位置.数组中的每个元素代表你在该位置可以向后跳跃的最大长度. 问题一 判断你能不能到达数组的最后一个位置. 思路:从数组的第一个位置开 ...

  6. 运用贪心思想解决跳跃游戏

    运用贪心思想解决跳跃游戏 文章目录 运用贪心思想解决跳跃游戏 Jump Game I 1.题目描述 2.分析 3.代码 Jump Game II 1.问题描述 2.分析 3.动规代码[超时] 4.贪心 ...

  7. JavaScript实现backtracking Jump Game回溯跳跃游戏算法(附完整源码)

    JavaScript实现backtracking Jump Game回溯跳跃游戏算法(附完整源码) backtrackingJumpGame.js完整源代码 backtrackingJumpGame. ...

  8. 55.跳跃游戏(Jump Game)

    我的GitHub,欢迎捧场:https://github.com/FuGaZn/LeetCode 题目描述 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的 ...

  9. C++jump game跳跃游戏的算法(附完整源码)

    C++jump game跳跃游戏的算法 C++实现jump game跳跃游戏的算法完整源码(定义,实现,main函数测试) C++实现jump game跳跃游戏的算法完整源码(定义,实现,main函数 ...

最新文章

  1. 自定义控件(一) Activity的构成(PhoneWindow、DecorView)
  2. 小学听课计算机笔记范文,小学教师听课记录精选10篇【最新】.pdf
  3. Activiti 工作流引擎的初步使用
  4. php html 文本域,html文本域标签属性有哪些?html文本域标签属性用法介绍
  5. linux 网络编程:使用两线程实现socket同时收发数据
  6. php将变量转成字符串类型
  7. 7种方式,教你提升 SpringBoot 项目的吞吐量
  8. SNF软件开发机器人2018最新更新内容
  9. Elasticsearch:InteliJ Elasticsearch plugin 集成
  10. 苹果ios签名过期了,APP应用还能照常使用吗?
  11. Shadow 腾讯插件化——深度解剖框架设计
  12. 接口自动化参数化(一)
  13. 生成SSH Key(linux)
  14. bp神经网络需要多少样本,bp神经网络训练时间
  15. 【Redis笔记】发布与订阅
  16. libuv 使用点滴
  17. 原生JS 实现放大镜
  18. 【BZOJ3670】【UOJ5】【NOI2014】动物园
  19. 用友U9,U9C学习资料
  20. 【ICS551 时钟缓冲器国产替代量产】

热门文章

  1. python graphviz安装
  2. sql dateadd函数_DATEADD SQL函数简介和概述
  3. 那些年,我熟知的影视明星(1)
  4. 微信小游戏客服API高阶用法
  5. Python与数据库[2] - 关系对象映射/ORM[1] - sqlalchemy 的基本使用示例
  6. 使用集合实现彩票双色球,并进行比较判断是否中奖
  7. python中func自定义函数_Python函数之自定义函数作用域闭包
  8. 小程序图片拉伸缩放一闪而过bug
  9. 解决android 自带的模拟器无法启动成功的问题
  10. 地图投影的N种姿势(转载)