题解 | #跳石板#
跳石板
https://www.nowcoder.com/practice/4284c8f466814870bae7799a07d49ec8
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
int[] arr=new int[m+1];
for (int i = 0; i < m+1; i++) {
arr[i]=Integer.MAX_VALUE;
}
arr[n]=0;
for (int i = n; i < m; i++) {
if(arr[i]==Integer.MAX_VALUE){
continue;
}
ArrayList<Integer> num=arr(i);
for (Integer x:num) {
if(x+i<=m&&arr[i+x]!=Integer.MAX_VALUE){
arr[i+x]=Math.min(arr[i+x],arr[i]+1);
}else if(i+x<=m){
arr[i+x]=arr[i]+1;
}
}
}
if(arr[m]==Integer.MAX_VALUE){
System.out.println(-1);
}else {
System.out.println(arr[m]);
}
}
private static ArrayList<Integer> arr(int n){
ArrayList<Integer> arr=new ArrayList<>();
for (int i = 2; i*i <= n; i++) {
if(n%i==0){
arr.add(i);
if(n/i!=i){
arr.add(n/i);
}
}
}
return arr;
}
}
