题目描述
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分发(5,1,1和1,1,5是同一种方法)
输入输出格式
输入格式:
第一行是测试数据的数目t(0≤t≤20),以下每行均包括二个整数M和N,以空格分开。1≤M,N≤10
输出格式:
对输入的每组数据M和N,用一行输出相应的K。
输入输出样例
输入样例1:
1
7 3
输出样例1:
8
输入样例2:
3
3 2
4 3
2 7
输出样例2:
2
4
2
观察题目,我们可以发现这道题是一道简单的递推/动态规划。
当然,这道题理论上来说,有两种动态规划的思路,最后都汇成一个转移方程,不过并不一样。
第一种方法:f[i][j]数组记录前i个盘子里放了j个苹果,并且保证每个盘子都放有苹果的方案数,这样在计算答案时需要统计求和。
具体的思路与把弹珠放在盒子里 简单的动态规划类似,在这里就不再重复讲述。
代码如下:
#include <bits/stdc++.h>