袋鼠過河
阿新 • • 發佈:2018-05-30
輸出 個數 ring mat ont 能夠 NPU 多少 ade
題目描述
一只袋鼠要從河這邊跳到河對岸,河很寬,但是河中間打了很多樁子,每隔一米就有一個,每個樁子上都有一個彈簧,袋鼠跳到彈簧上就可以跳的更遠。每個彈簧力量不同,用一個數字代表它的力量,如果彈簧力量為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 }
袋鼠過河