We are going to place M same apples into N same plates.
There could be some empty plates.
How many methods do we have?
When we have 7 applesand 3 plates, the methods, (1, 5, 1) and (5, 1, 1) are the same.
**
Input
**
The first line is the number of test cases, t. 0<=t<=20
The next t lines are test cases containing two numbers, M and N. 1<=M, N<=10.
Output
Output the numbers of method in each test case in one line.
Sample Input
1
7 3
Sample Output
8
解题思路:看代码注释
#include<iostream>
using namespace std;
int f(int n,int k)//将n个苹果放在k个盘子里面
{
if(n==0&&k)//没有苹果,方法只有一种
return 1;
if(k==0)//没有盘子,放法数为0
return 0;
if(n<k)
return f(n,n);
else
return f(n-k,k)+f(n,k-1);//n个苹果放在k个盘子的放法N=先将k个盘子放满的放法总数
//+至少有一个盘子为空的放法总数
}
int main()
{
int t,n,k;
cin>>t;
while(t--)
{
cin>>n>>k;
cout<<f(n,k)<<endl;
}
return 0;
}