放苹果 划分数问题
链接:https://www.nowcoder.com/questionTerminal/bfd8234bb5e84be0b493656e390bdebf?f=discussion 来源:牛客网 题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 输入 每个用例包含二个整数M和N。0<=m<=10,1<=n<=10。 样例输入 7 3 样例输出 8 /** 计算放苹果方法数目 输入值非法时返回-1 1 <= m,n <= 10 @param m 苹果数目 @param n 盘子数目数 @return 放置方法总数 */ public static int count(int m, int n) 输入描述: 输入两个int整数 输出描述: 输出结果,int型 示例1 输入 7 3 输出 8 解题分析: 设f(m,n) 为m个苹果,n个盘子的放法数目,则先对n作讨论, 当n>m:必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生影响。即if(n>m) f(m,n) = f(m,m) 当n<=m:不同的放法可以分成两类: 1、有至少一个盘子空着,即相当于f(m,n) = f(m,n-1); 2、所有盘子都有苹果,相当于可以从每个盘子中拿掉一个苹果,不影响不同放法的数目,即f(m,n