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 }
复制代码

 

posted @   草莓小甜心  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示