题解 | #放苹果#

放苹果

https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int a = in.nextInt();
            int b = in.nextInt();
            System.out.println(f(a,b));
        }
    }

    public static int f(int m,int n){
        if(m == 0 || n == 1){
            return 1;
        }
        if(m < n){
            //m<n时f(m,n)=f(m,n-1)
            return f(m,n-1);
        }else {
            //m >= n的情况
            //f(m,n-1):m个苹果放入n-1个盘子,另一个盘子中放0个,相当于至少有一个盘子是空的
            //所有盘子都不为空:每个盘子都有一个,剩余m-n个需要放到n个盘子,则为f(m-n,n)
            return f(m,n-1) + f(m-n,n);
        }
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务