test题目:袋鼠过河
一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远。每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为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题目:袋鼠过河相关推荐
- 袋鼠过河(动态规划)
题目描述 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远.每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为 ...
- 头歌-EduCoder:袋鼠过河问题
头歌-EduCoder:袋鼠过河问题 任务描述 题目描述 编程要求 测试说明 代码实现 任务描述 本关任务:编写一个袋鼠过河问题的小程序. 题目描述 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打 ...
- educoder算法设计与分析 实验一扩展 袋鼠过河问题
实验五 回溯法扩展1 第1关:袋鼠过河问题 第1关:袋鼠过河问题 题目描述: 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩,每隔一米就有一个,每个桩上面有一个弹簧,袋鼠跳到弹簧上就可以跳 ...
- 【算法】袋鼠过河,动态规划问题(C++源码)
[算法]袋鼠过河,动态规划问题(C++源码) 一.问题描述 二.输入描述 三. 输出描述 四.输入样例 五.输出样例 六.步骤描述 七.运行结果截图 八.源代码(C++) 一.问题描述 一只袋鼠要从河 ...
- 动态规划之袋鼠过河问题
题目:一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远,每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为5, ...
- 袋鼠过河问题(Java)
从牛客网上看到的这道题:题目如下: 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远.每个弹簧力量不同,用一个数字代 ...
- 袋鼠过河问题(DP)
首先应当指出,这道题的问题描述不清晰.描述中说到:河中间打了很多桩子,每隔一米就有一个,河流一共n米宽,袋鼠初始在第一个弹簧上面,若跳到最后一个弹簧就算过河了. 结合题目中给出的样例,疑点有以下两个: ...
- c++编程题 袋鼠过河
题目描述 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远.每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为 ...
- 求解袋鼠过河问题(dp)
问题描述:一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上有一个弹簧,袋鼠跳到弹簧上就可以跳的更远.每个弹簧力量不同,用一个数字代表它的力量,如果弹簧的力量为 ...
最新文章
- 来呀!AI喊你斗地主——首个搞定斗地主的深度神经网络
- Java PriorityQueue实现大顶堆
- 个人副业在家可做大学生首选小程序创业项目
- google Guava包的ListenableFuture解析
- 深度学习(三)——Autoencoder, 词向量
- MongoDB索引案例一则
- android数据持久化框架,Android:数据持久化、Environment、SharedPreferences、内部存储internalStorage...
- Meta Company在公开信中谴责Facebook改名
- [zoj3593]扩展欧几里得+三分
- uefi windows10 linux,UEFI 启动GPT分区 Win10和Ubuntu16.04双系统安装
- 清北中科院12位大咖联手,带你入门AI热门领域NLP!限时只需199
- golang-Tag
- Agenda for Mac(多功能日历管理工具)中文版
- Hadoop、Spark等5种大数据框架对比,你的项目该用哪种?
- Linux中级之netfilter防火墙(iptables)
- 学生选课系统代码-2view视图层代码【MVC--v】代码
- access统计行数 vb_VB代码行数统计工具
- TeamViewer在windows2003上如何免费使用
- 关于ExtJS错误“例外被抛出且未被接住”问题
- verilog 状态机 三角波 发生器