一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远。每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为5,就代表袋鼠下一跳最多能够跳5米,如果为0,就会陷进去无法继续跳跃。河流一共N米宽,袋鼠初始位置就在第一个弹簧上面,要跳到最后一个弹簧之后就算过河了,给定每个弹簧的力量,求袋鼠最少需要多少跳能够到达对岸。如果无法到达输出-1

输入描述:

输入分两行,第一行是数组长度N (1 ≤ N ≤ 10000),第二行是每一项的值,用空格分隔。

输出描述:

输出最少的跳数,无法到达输出-1

示例1

输入

5
2 0 1 1 1

输出

4
#include <iostream>
using namespace std;int CleanData(char *data, int len, int jump_max)
{int i, j, k; for (i = len - 1; i > 0; i--){if (data[i] == 0){for (j = 1; j < 1 + jump_max; j++){if (i - j < 0){break;}if (data[i - j] == j || data[i - j] == 0){data[i - j] = 0;}else{break;}}}}return 0;
}
int CountMinJump(char* data, int len)
{int i = 0;        //当前坐标int j = 0;int step_count = 0;int sortbest = 0;int thissum = 0;int maxsum = 0;while (i < len){if (data[i] == 1){step_count++;i++;continue;}maxsum = 0;for (j = data[i]; j >= 1; j--){if (i + j > len - 1){sortbest = len;break;}if (data[i + j] == 0){continue;}thissum = i + j + data[i + j];if (maxsum < thissum){maxsum = thissum;sortbest = i + j;}}i = sortbest;step_count++;}return step_count;
}
int main()
{int NUM = 0;int i = 0;int j, k;int ret = 0;int a = 0;int maxjump = 0;cin >> NUM;char* data = (char *)malloc(NUM * sizeof(char));while (scanf("%d", &a) == 1){if (maxjump < a){maxjump = a;}data[i] = a;i++;if (i == NUM){break;}}CleanData(data, NUM, maxjump);if (data[0] == 0){ret = -1;}else{ret = CountMinJump(data, NUM);}printf("%d", ret);system("pause");return 0;
}

test题目:袋鼠过河相关推荐

  1. 袋鼠过河(动态规划)

    题目描述 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远.每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为 ...

  2. 头歌-EduCoder:袋鼠过河问题

    头歌-EduCoder:袋鼠过河问题 任务描述 题目描述 编程要求 测试说明 代码实现 任务描述 本关任务:编写一个袋鼠过河问题的小程序. 题目描述 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打 ...

  3. educoder算法设计与分析 实验一扩展 袋鼠过河问题

    实验五 回溯法扩展1 第1关:袋鼠过河问题 第1关:袋鼠过河问题 题目描述: 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩,每隔一米就有一个,每个桩上面有一个弹簧,袋鼠跳到弹簧上就可以跳 ...

  4. 【算法】袋鼠过河,动态规划问题(C++源码)

    [算法]袋鼠过河,动态规划问题(C++源码) 一.问题描述 二.输入描述 三. 输出描述 四.输入样例 五.输出样例 六.步骤描述 七.运行结果截图 八.源代码(C++) 一.问题描述 一只袋鼠要从河 ...

  5. 动态规划之袋鼠过河问题

    题目:一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远,每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为5, ...

  6. 袋鼠过河问题(Java)

    从牛客网上看到的这道题:题目如下: 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远.每个弹簧力量不同,用一个数字代 ...

  7. 袋鼠过河问题(DP)

    首先应当指出,这道题的问题描述不清晰.描述中说到:河中间打了很多桩子,每隔一米就有一个,河流一共n米宽,袋鼠初始在第一个弹簧上面,若跳到最后一个弹簧就算过河了. 结合题目中给出的样例,疑点有以下两个: ...

  8. c++编程题 袋鼠过河

    题目描述 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远.每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为 ...

  9. 求解袋鼠过河问题(dp)

    问题描述:一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上有一个弹簧,袋鼠跳到弹簧上就可以跳的更远.每个弹簧力量不同,用一个数字代表它的力量,如果弹簧的力量为 ...

最新文章

  1. 来呀!AI喊你斗地主——首个搞定斗地主的深度神经网络
  2. Java PriorityQueue实现大顶堆
  3. 个人副业在家可做大学生首选小程序创业项目
  4. google Guava包的ListenableFuture解析
  5. 深度学习(三)——Autoencoder, 词向量
  6. MongoDB索引案例一则
  7. android数据持久化框架,Android:数据持久化、Environment、SharedPreferences、内部存储internalStorage...
  8. Meta Company在公开信中谴责Facebook改名
  9. [zoj3593]扩展欧几里得+三分
  10. uefi windows10 linux,UEFI 启动GPT分区 Win10和Ubuntu16.04双系统安装
  11. 清北中科院12位大咖联手,带你入门AI热门领域NLP!限时只需199
  12. golang-Tag
  13. Agenda for Mac(多功能日历管理工具)中文版
  14. Hadoop、Spark等5种大数据框架对比,你的项目该用哪种?
  15. Linux中级之netfilter防火墙(iptables)
  16. 学生选课系统代码-2view视图层代码【MVC--v】代码
  17. access统计行数 vb_VB代码行数统计工具
  18. TeamViewer在windows2003上如何免费使用
  19. 关于ExtJS错误“例外被抛出且未被接住”问题
  20. verilog 状态机 三角波 发生器

热门文章

  1. 橘子学java之java中的协程
  2. Matlab2018b任务栏图标消失且与m文件不关联
  3. 整理:状态机的C语言编程
  4. 二、SpringBoot配置-简述配置加载原理
  5. 电脑中休眠和待机的区别
  6. 容联荣膺「金融AI技术引领奖」,助力金融机构搭建智能交互中心
  7. ABP入门系列之1——ABP总体介绍
  8. 邮件发送失败服务器繁忙,★邮件发送失败的原因和解决方法
  9. 关于python机器学习cross_val_score()交叉检验的参数cv实际默认为5这件事,你怎么看?
  10. jQuery老矣,尚能饭否