Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 14487 Accepted: 9132

   本题就是一个简单的递推,可以考虑当将M个同样的苹果放在N个同样的盘子里(记清楚了是同样的苹果同样的盘子,也就是没有什么区别)其实有两种情况,也就是第n个盘子可以是空的也可以不是空的,空的时候test(m,n-1)其实就是将m个同样的苹果放到n-1个盘子里,非空的时候就是每个盘子至少一个,所以剩下的m-n个盘子可以自由的摆放,所以test(m-n,n),还有一种情况就是当m<n的时候肯定至少有n-m个盘子是空的所以test(m,n)=test(m,m);

代码:

 

1 #include<stdio.h>
2  int test(int x,int y)
3 {
4 if(x==0)
5 return 1;
6 if(y==1)
7 return 1;
8 if(x<y)
9 return test(x,x);
10 return test(x,y-1)+test((x-y),y);
11 }
12  int main()
13 {
14 int t,m,n;
15 scanf("%d",&t);
16 while(t--)
17 {
18 scanf("%d%d",&m,&n);
19 printf("%d\n",test(m,n));
20 }
21 return 0;
22 }