题解 | #放苹果#

放苹果

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.hasNext()){
            int m=in.nextInt();
            int n=in.nextInt();
            System.out.println(digui(m,n));
        }
    }


    public static int digui(int m, int n){
        if(m<0 || n<=0){ //苹果为负数或者没盘子不能放
            return 0;
        }
        if(m==0 || n==1){ //没苹果或者有一个苹果有一个盘子也是一种放法
            return 1;
        }

        //一个盘子不放的方法+所有盘子都放一个苹果的方式,可以避免重复
        //递归从1个盘子开始放起,到两个盘子,再到三个盘子。。。
        return digui(m,n-1)+digui(m-n,n);
    }
}

全部评论

相关推荐

刷牛客的我很豁达:你是不是对算法有什么误解,你没手握两篇顶刊顶会,还想搞算法岗,有顶刊顶会在算法岗算才入门
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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