把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
输入
每个用例包含二个整数M和N。0<=m<=10,1<=n<=10。
样例输入
7 3
样例输出
8
#include<stdio.h>
int result(int M,int N)
{
if(N==1||M==1) return 1; //如果只有一个苹果,或者只有一个盘子
else if(M<N) return result(M,M); //如果苹果比盘子少,就只需要考虑M个苹果放到M个盘子里面
else if(M==N) return result(M,M-1)+1;//如果苹果数和盘子数相等,第一种刚刚好每个盘子一个苹果,剩下就是(M,M-1)
else
{
return result(M-N,N)+result(M,N-1);//苹果比盘子多,就是每个盘子一个苹果后(M-N,N),加上空一个盘子的情况(M,N-1) /*注意这里面就包括了(M,N-2)*/
}
}
int main()
{
int M,N;
while(scanf("%d%d",&M,&N)!=EOF)
{
printf("%d\n",result(M,N));
}
return 0;
}