把 M 个同样的苹果放在 N 个同样的盘子里,允许有的盘子空着,问共有多少种不同的放法?
注:5,1,1 和 1,5,1 是同一种放法(因为盘子相同,顺序无关)。
第一行包含一个整数 t ( 0 < t \le 20 ),表示测试数据的组数。
接下来 t 行,每行包含两个整数 M 和 N ( 1 \le M, N \le 10 ),分别表示苹果数和盘子数。
对于每组数据,输出一行一个整数,表示对应的放法总数 K 。
1 7 3
8
这是一个经典的递归/动态规划问题。
设 f(m, n) 表示将 m 个苹果放入 n 个盘子中的方法数。考虑两种情况:
因此递推式:
f(m, n) =
1, m = 0 或 n = 1
f(m, m), n > m
f(m, n-1) + f(m-n, n), m \ge n
用递归或动态规划均可,由于数据范围很小,递归即可。
| 时间限制 | 1 秒 |
| 内存限制 | 128 MB |