袋鼠过河(动态规划)
题目描述
输入描述:
输入分两行,第一行是数组长度N (1 ≤ N ≤ 10000),第二行是每一项的值,用空格分隔。
输出描述:
输出最少的跳数,无法到达输出-1
输入
5 2 0 1 1 1
输出
4
1 import java.util.ArrayList; 2 import java.util.List; 3 import java.util.Scanner; 4 /** 5 * 6 * 袋鼠过河(最多跳弹簧的步数) 用 list 来模拟dp数组 list存每一行,横坐标为 各个弹簧的到达情况 未到达为0 到达为1 到达此处陷入为0 7 * 8 * @author Dell 9 * 10 */ 11 public class Main { 12 static List<int[]> dp = new ArrayList(); 13 static int n; 14 static int[] is; 15 16 static int f() { 17 // 站在第一个弹簧上时 18 int step = 0; 19 int x = 0; 20 int[] s = new int[n + 1]; 21 for (int j = 0; j < s.length; j++) { 22 s[j] = 0; 23 } 24 s[0] = 1; 25 dp.add(s); 26 while (step <= n) {// 所有行 27 int[] ss = new int[n + 1];// 多出来的最后一位表示岸上 28 for (int j = 0; j < ss.length; j++) { 29 ss[j] = 0; 30 } 31 // 每一行 根据本行填写下一行 32 for (int i = step; i < ss.length; i++) {// 多出来的最后一位表示岸上 33 // 位置 i已到达 34 if (dp.get(dp.size() - 1)[i] == 1) { 35 // 走不同的步数 36 for (int j = 1; j <= is[i]; j++) { 37 // 判断不可超出弹簧范围一个一,下标要多减,若超出则选岸上为1 38 if (i + j <= ss.length-2) { 39 // 在范围内 新位置 不是0 不会陷 访问 40 if (is[i + j] > 0) { 41 ss[i + j] = 1; 42 } 43 } else { 44 // 超出则选最后一个为1 45 ss[ss.length - 1] = 1; 46 } 47 } 48 } 49 } 50 dp.add(ss); 51 52 step++; 53 if (dp.get(dp.size()-1)[ss.length - 1] == 1) {// 岸上访问到 54 return step; 55 } 56 } 57 return -1; 58 } 59 public static void main(String[] args) { 60 Scanner sc = new Scanner(System.in); 61 n = sc.nextInt(); 62 is = new int[n]; 63 for (int i = 0; i < is.length; i++) { 64 is[i] = sc.nextInt(); 65 } 66 int res = f(); 67 System.out.println(res); 68 } 69 }
转载于:https://www.cnblogs.com/the-wang/p/8981592.html
袋鼠过河(动态规划)相关推荐
- c语言打袋鼠游戏,搜狐 袋鼠过河 动态规划
题目描述 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远.每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为 ...
- 【算法】袋鼠过河,动态规划问题(C++源码)
[算法]袋鼠过河,动态规划问题(C++源码) 一.问题描述 二.输入描述 三. 输出描述 四.输入样例 五.输出样例 六.步骤描述 七.运行结果截图 八.源代码(C++) 一.问题描述 一只袋鼠要从河 ...
- 头歌-EduCoder:袋鼠过河问题
头歌-EduCoder:袋鼠过河问题 任务描述 题目描述 编程要求 测试说明 代码实现 任务描述 本关任务:编写一个袋鼠过河问题的小程序. 题目描述 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打 ...
- educoder算法设计与分析 实验一扩展 袋鼠过河问题
实验五 回溯法扩展1 第1关:袋鼠过河问题 第1关:袋鼠过河问题 题目描述: 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩,每隔一米就有一个,每个桩上面有一个弹簧,袋鼠跳到弹簧上就可以跳 ...
- 动态规划之袋鼠过河问题
题目:一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远,每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为5, ...
- 袋鼠过河问题(Java)
从牛客网上看到的这道题:题目如下: 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远.每个弹簧力量不同,用一个数字代 ...
- 袋鼠过河python
2019独角兽企业重金招聘Python工程师标准>>> 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧, 袋鼠跳到弹簧上就可以 ...
- c++编程题 袋鼠过河
题目描述 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远.每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为 ...
- 袋鼠过河问题(DP)
首先应当指出,这道题的问题描述不清晰.描述中说到:河中间打了很多桩子,每隔一米就有一个,河流一共n米宽,袋鼠初始在第一个弹簧上面,若跳到最后一个弹簧就算过河了. 结合题目中给出的样例,疑点有以下两个: ...
最新文章
- myeclipse 修改模板
- mysql打印语句_最全总结 | 聊聊 Python 数据处理全家桶(Mysql 篇)
- document.ready和onload的区别——JavaScript文档加载完成事件
- C# 定义了 7 种变量类别:静态变量、实例变量、数组元素、值参数、引用参数、输出参数和局部变量
- 19岁「黑客」连续破解25辆特斯拉
- linux内存管理(八)-不连续页分配和页表
- 谷歌AI相机Clips今发售,“贴身摄影师”抓拍每一刻欢乐
- oracle登录卡,【Oracle连接问题】关于windows xp3上oracle连接登录卡住的问题
- 瀑布模型,快速原型模型,增量模型,螺旋模型以及敏捷开发模型的相关概念
- PHP强大自适应OA协同办公系统源码 含CRM客户管理系统+内部聊天工具
- Python文件操作及函数
- 一点感悟: 詹姆斯与全栈工程师
- 学习报告:基于原型网络的小样本学习《Prototypical Networks for Few-shot Learning》
- 夜深人静写算法(九)- Dancing Links X(跳舞链)
- mysql pdo 端口_pdo连接mysql
- Android UI
- pandas 中上下两行相减(隔行相减) -- shift函数的使用
- 2019 秦皇岛CCPC赛后总结
- html指定区域的背景颜色,JS实现点击颜色块切换指定区域背景颜色的方法
- Android Audio 音频路由
热门文章
- LeetCode 笔记系列 18 Maximal Rectangle [学以致用](最大矩形)
- php限制字符输入,.NET_asp.net(c#)限制用户输入规定的字符和数字的代码,一下是这个代码: 只允许 用 - phpStudy...
- sql server 2008连接oracle操作步骤详细记录,SQLServer连接Oracle详细步骤
- java中json重复数据结构_JS实现去除数组中重复json的方法示例
- python海龟画笔如何运行_Python海龟绘图:turtle的简单使用
- win2008怎么配置php,Win2008 PHP 配置环境搭建 教程
- linux 浏览器源码下载,Android开发:图片浏览器源码
- data es集群master_Kubernetes Helm3 部署 ElasticSearch amp; Kibana 7 集群
- 河南城建学院计算机分数,河南城建学院录取分数线2021是多少分(附历年录取分数线)...
- 谁说C语言和C+太难?没前途?谬论!