【牛客网】放苹果

在这里插入图片描述

是一个数学题目:应用了递归的思想。f(m,n) m为苹果数,n为盘子数。如果n>m f(m,n)=f(m,m) 因为一定有n-m个盘子是空的。如果n<=m,f(m,n)=f(m-n,n)+f(m,n-1)。分成了两种情况,每一个盘子都有苹果;至少有一个盘子没有苹果。利用这个递推公式就可以求出答案。


import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            int apple = in.nextInt();
            int plate = in.nextInt();
            System.out.println(method(apple, plate));
        }
    }

    public static int method(int apple, int plate) {
        if (plate == 0) return 0;
        if (apple == 0 || plate == 1) {
            return 1;
        }
        if (plate > apple)
            plate = apple;

        // 分成两种情况。所有的盘子都有苹果;至少有一个盘子没有苹果
        return method(apple - plate, plate) + method(apple, plate - 1);

    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章