/*
* 有m个物品放到n个容器中,全部放完, 有的容器可以不放
* 问有多少种放法
*/
package com.test;
public class DivideApple {
/**
* @param m
* @param n
*/
public static void divideAppleMethod(int m, int n) {
if(n > m) {
n = m;
}
int divdeC = 0;
int curC = 0;
for(int i = 1; i <= n; i++) {
curC = startDivide(m, i);
divdeC += curC;
}
System.out.println("divide count : " + divdeC);
}
/**
* @param m
* @param n
* @return
*/
public static int startDivide(int m, int n) {
m = m - n;
if(n > m) {
n = m;
}
//1.如果正好是n个苹果放n个盘子
//2.n个苹果放一个盘子
if(m == 0 || n == 1) {
return 1;
}
int divdeC = 0;
int curC = 0;
for(int i = 1; i <= n; i++) {
curC = startDivide(m, i);
divdeC += curC;
}
return divdeC;
}
}