放苹果问题

题目描述:

把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。

输入
每个用例包含二个整数M和N。0<=m<=10,1<=n<=10。

样例输入
7 3
样例输出
8

思路:m个苹果放到n个盘子,可以拆分问题为有盘子不放苹果,和每个盘子都放苹果
开始想到有盘子不放苹果:即分为有1个,2个,3个...n-1个盘子不放的情况,却产生了重复的数据。
这里只需要记录有一个不放的情况dp[m,n-1],在下轮计算中,会有此基础的dp[m,n-2],即初始问题对应的两个盘子不放的情况;
递推公式:
dp[m,n]=dp[m-n,n]+dp[m,n-1]
dp[m-n,n]即先把每个蓝子都放置一个,达到每个都有的效果,再把剩余的m-n个分到n个篮子

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner scan=new Scanner(System.in);
        while(scan.hasNext()){
            System.out.println(fun(scan.nextInt(),scan.nextInt()));
        }
    }
    public static int fun(int m,int n){
        if(m<0||n<0)
            return 0;
        if(m==1||n==1)
            return 1;
        return fun(m-n,n)+fun(m,n-1);
    }
}
全部评论
只有部分case通过
点赞 回复 分享
发布于 2021-03-13 10:16

相关推荐

12-15 14:16
门头沟学院 Java
回家当保安:发offer的时候会背调学信网,最好不要这样。 “27届 ”和“28届以下 ”公司招聘的预期是不一样的。
实习简历求拷打
点赞 评论 收藏
分享
11-23 15:14
中原工学院 Java
程序员花海_:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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