描述
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
输入
第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。
输出
对输入的每组数据M和N,用一行输出相应的K。
样例输入
1 7 3
样例输出
8
代码如下:
1 #include <cstdio> 2 int re(int m,int n){ 3 if(m==0||n==1){ 4 return 1; 5 }else if(n>m){ 6 return re(m,m); 7 }else { 8 return re(m-n,n)+re(m,n-1); 9 } 10 } 11 int main() 12 { 13 int t; 14 scanf("%d",&t); 15 while(t--){ 16 int m,n; 17 scanf("%d %d",&m,&n); 18 int ans=re(m,n); 19 printf("%d\n",ans); 20 } 21 22 return 0; 23 }
思路解析:
经典递归。