欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

放苹果——递归

程序员文章站 2024-03-17 18:15:22
...

小蒜想知道把 MMM 个同样的苹果放在 NNN 个同样的盘子里,允许有的盘子空着不放,共有多少种不同的分法?(用 KKK 表示)555,111,111 和 111,555,111 是同一种分法。

输入格式

第一行是测试数据的数目 t(0≤t≤20)t(0 \le t \le 20)t(0≤t≤20)。

以下每行均包含两个整数 MMM 和 NNN,以空格分开。1≤M,N≤101 \le M, N \le 101≤M,N≤10。

输出格式

对输入的每组数据 MMM 和 NNN,用一行输出相应的 KKK。

输出时每行末尾的多余空格,不影响答案正确性

样例输入复制

1
7 3

样例输出复制

8

【分析】m 个苹果放在 n 个盘子中,求放法数量。

递归出口:m = 0, 1 种放法;n = 1,一种放法。

递归体:有空盘 + 无空盘。

 

#include <cstdio>
int sum;
int apple(int m, int n) {
	if (m == 0) return 1;
	if (n == 1) return 1;
	if (m < n) return apple(m, m);
	else	return apple(m, n - 1) + apple(m - n, n);
}
int main() {
	int t;
	scanf("%d", &t);
	while (t--) {
		int m, n;
		sum = 0;
		scanf("%d %d", &m, &n);
		sum = apple(m, n);
		printf("%d\n", sum);
	}
	return 0;
}