题解 | #HJ061 放苹果#

放苹果

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

import java.util.Scanner;

/**
 * HJ61 放苹果 - 简单
 */
public class HJ061 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextInt()) {
            int a = sc.nextInt();
            int b = sc.nextInt();
            System.out.println(count(a, b));
        }
        sc.close();
    }

    /**
     * m 苹果数
     * n 盘子数
     */
    private static int count(int m, int n) {
        // 一个盘 或者 没有苹果 代表一种方案
        if (n == 1 || m == 0) {
            return 1;
        } else if (n > m) {
            // 盘子过多情况,多余的盘子不起任何作用,最大的有效盘子是 m 个
            return count(m, m);
        } else {
            // 情况一: 只用 n - 1个盘子
            // 情况二: 每个盘子里先放一个苹果,等价于 m - n个苹果放到 n 个盘子
            return count(m, n - 1) + count(m - n, n);
        }
    }
}
全部评论

相关推荐

01-15 13:52
已编辑
河南大学 Java
六年要多久:标准头像,不吃香菜😂
点赞 评论 收藏
分享
02-03 12:20
门头沟学院 Java
一天代码十万三:你这个简历东西太杂了,根本看不出你想投什么岗位
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客企业服务