袋鼠过河

Posted 4545mdf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了袋鼠过河相关的知识,希望对你有一定的参考价值。

题目描述

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

输入描述:

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

输出描述:

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

输入

5
2 0 1 1 1

输出

4
 1 import java.io.BufferedReader;
 2 import java.io.InputStreamReader;
 3    
 4 public class Main {
 5    
 6     public static void main(String[] args) throws Exception{
 7         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 8         String str;
 9         String[] strs;
10         int n;
11    
12         while((str = br.readLine()) != null){
13             n = Integer.parseInt(str.trim());
14             str = br.readLine();
15             strs = str.trim().split(" ");
16             int[] input = new int[n];
17             for(int i = 0; i < n; ++i)
18                 input[i] = Integer.parseInt(strs[i]);
19             int step = 1;
20             int now = input[0];
21             int next = now;
22             for(int i = 1; i < n; ++i){
23                 if(i == now){
24                     next = Math.max(next, i + input[i]);
25                     if(next == now){
26                         System.out.println(-1);
27                         break;
28                     }
29                     ++step;
30                     now = next;
31                     if(next >= n){
32                         System.out.println(step);
33                         break;
34                     }
35                 }
36                 else{
37                     next = Math.max(next, i + input[i]);
38                     if(next >= n){
39                         System.out.println(++step);
40                         break;
41                     }
42                 }
43             }
44         }
45     }
46 }

 

以上是关于袋鼠过河的主要内容,如果未能解决你的问题,请参考以下文章

袋鼠过河 dp

袋鼠过河---DP

袋鼠过河(动态规划)

袋鼠过河(动态规划)

练习题7:袋鼠过河(使用了动态规划求解)

1420 数袋鼠好有趣(贪心二分)