1206:放苹果
时间限制: 1000 ms 内存限制: 65536 KB
【题目描述】
把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
【来源】
No
1. #include<cstdio> 2. #include<iostream> 3. #include<cstring> 4. using namespace std; 5. int up(int a,int b)//a苹果 b盘子 6. { 7. if(a==0||b==1) return 1; 8. else if(a<b) return up(a,a);//苹果数小于盘子数 9. else return up(a-b,b)+up(a,b-1); 10. //每个盘子至少放一个苹果 +至少有一个盘子为空 11. } 12. int main() 13. { 14. int t,m,n; 15. scanf("%d",&t); 16. for(int i=1;i<=t;i++){ 17. scanf("%d %d",&m,&n); 18. printf("%d\n",up(m,n)); 19. } 20. return 0; 21. }