小蒜想知道把 MM 个同样的苹果放在 NN 个同样的盘子里,允许有的盘子空着不放,共有多少种不同的分法?(用 KK 表示)55,11,11 和 11,55,11 是同一种分法。
输入格式
第一行是测试数据的数目 t(0 \le t \le 20)t(0≤t≤20)。
以下每行均包含两个整数 MM 和 NN,以空格分开。1 \le M, N \le 101≤M,N≤10。
输出格式
对输入的每组数据 MM 和 NN,用一行输出相应的 KK。
输出时每行末尾的多余空格,不影响答案正确性
样例输入复制
1
7 3
样例输出复制
8
动态规划的典型题目
#include<iostream>
using namespace std;
int f(int m,int n){
if(m==0) return 1;//没有苹果
if(n==1) return 1;//只有一个盘子
if(m < n){
//苹果数量少于盘子数量
return f(m,m);
} else{
//苹果数量多于盘子数量或者等于
//分为不是所有盘子都有苹果,以及所有盘子都有苹果
return f(m,n-1)+f(m-n,n);
}
}
int main(){
int t;
cin >> t;
while(t--){
int m,n;
cin >> m>> n;
cout<<f(m,n)<<endl;
}
return 0;
}