50分没有记忆法之前是超时用完记忆法后是报错

P1255 数楼梯

zz698 @ 2024-10-26 10:43:14


import java.util.Arrays;
import java.util.Scanner;
public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            System.out.println(fac(n));
        }
        public static int fac(int n){
            int[]   arrays = new int[n+1];
            Arrays.fill(arrays, -1);
            arrays[0] = 1;
            arrays[1] = 1;
            return fub(n, arrays);
         }
         public static int fub(int n,int[] arrays){
            if (arrays[n] != -1) {
                return arrays[n];
            }
            else{
                int i=fub(n-1, arrays);
                int j=fub(n-2, arrays);
                arrays[n] = i+j;
                return arrays[n];
            }
         }
    }

by Linux0763 @ 2024-11-02 20:17:26

可能是因为后面的斐波那契数较大(非常大!!!),超出了所使用数据类型(int)的表示范围(溢出),需要用大数加减法来解决。当然,我也不太会,因为我遇到了相同的问题。


by Jason514 @ 2024-11-08 21:16:45

先做 P1601。


|