编程语言
首页 > 编程语言> > 1.跳石板-网易2017秋招编程题集合

1.跳石板-网易2017秋招编程题集合

作者:互联网

 

 

 

 动态规划:

  dp[i]:表示到达i号石板所需的最小步数 初始化dp数组为Integer.MAX_VALUE,如果dp[i]不为最大值则表示该点可以到达; dp[n] = 0;      
 1 import java.util.*;
 2 
 3 public class Main{
 4     public static void main(String[] args){
 5         Scanner sc = new Scanner(System.in);
 6         int n = sc.nextInt();
 7         int m = sc.nextInt();
 8         
 9         int[] dp = new int[m + 1];
10         Arrays.fill(dp, Integer.MAX_VALUE);
11         
12         dp[n] = 0;
13         for(int i = n; i <= m; ++i){
14             if(dp[i] == Integer.MAX_VALUE) continue;
15             for(int j = 2; j * j <= i; ++j){
16                 if((i % j) == 0){
17                     if(i + j <= m){
18                         dp[i + j] = Math.min(dp[i] + 1, dp[i + j]);
19                     }
20                     if(i + (i / j) <= m){
21                         dp[i + (i / j)] = Math.min(dp[i] + 1, dp[i + (i / j)]);
22                     }
23                 }
24             }
25         }
26         if(dp[m] == Integer.MAX_VALUE) dp[m] = -1;
27         System.out.println(dp[m]);
28         return;
29     }
30     
31 }

 

标签:nextInt,int,编程,sc,Integer,秋招,new,2017,dp
来源: https://www.cnblogs.com/zyx9710/p/16295852.html