题解 | #跳石板#

跳石板

https://www.nowcoder.com/practice/4284c8f466814870bae7799a07d49ec8

import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int N = in.nextInt();
        int M = in.nextInt();
        int[] ret = new int[M+1];

        ArrayList<Integer> arr = new ArrayList<>();

        for (int i = N+1; i <= M; i++) {
            ret[i] = Integer.MAX_VALUE;
        }

        for (int i = N; i < M; i++) {
            if (ret[i] == Integer.MAX_VALUE) {
                continue;
            }
            arr = new ArrayList<>();
            abc(i, arr);
            // for (int j = 0; j < arr.size(); j++) {
            //     int tmp = arr.get(j);
            //     if (i + tmp < M && ret[i + tmp] == 0) {
            //         ret[i + tmp] = ret[i] + 1;
            //     }else if(i + tmp == M) {
            //         ret[M] = ret[i] + 1;
            //     }
            // }
            for (int tmp : arr) {
                if (i + tmp <= M && ret[i + tmp] != Integer.MAX_VALUE) {
                    ret[i + tmp] = Math.min(ret[i] + 1, ret[i + tmp]);
                }else if(i + tmp <= M) {
                    ret[i + tmp] = ret[i] + 1;
                }
            }
        }
        if (ret[M] == Integer.MAX_VALUE) {
            System.out.println(-1);
        }else {
            System.out.println(ret[M]);
        }
    }

    public static void abc(int x, ArrayList<Integer> arr) {
        for (int i = 2; i * i <= x; i++) {
            if (x % i == 0) {
                arr.add(i);
                if (x / i != i) {
                    arr.add(x/i);
                }
            }
        }
    }
}

全部评论

相关推荐

2024-12-29 19:48
河北科技大学 Java
没事就爱看简历:问题不在于简历:1、大学主修课程学那么多应用语言,作为计算机专业是很难理解的。 2、技能部分,每一个技能点的后半句话,说明对熟练,熟悉的标准有明显误会。 3、项目应该是校企合作的练习吧,这个项目你负责什么,取得了哪些成果都没有提及,只是列举了你认为有技术含量的点,而这些都有成熟的实现。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务