1206:放苹果
边界:
只有一个盘子时,无论有多少苹果,方法数=1.
没有苹果时,无论有多少盘子,方法数=1.
递推公式:
f(m,n)=f(m,n-1)+f(m-n,n)。
将m个苹果放到n个盘子里的方法数=n个盘子中有一个盘子为空的方法数+n个盘子每个盘子里至少有一个苹果的方法数。
为什么f(m,n-1)不用乘以 呢?举例:m=3,n=4的时候,假定最后一个盘子为空递归进入f(3,3)。f(3,3)有三种情况<3,0,0><1,2><1,1,1>。所以对f(3,4):n个盘子中有一个盘子为空的方法数,肯定为3(空盘子的位置不影响计算结果)。
同理:m<n时,此时和f(m,m)的情况是一样的。
代码一:
#include<bits/stdc++.h>
using namespace std;
int getAns(int m,int n){
if(n>m) return getAns(m,m);
else if(n==1||m==0) return 1;
return getAns(m,n-1)+getAn