#include <bits/stdc++.h>
#define MAX 10
using namespace std;
int fun(int m, int n) {
if (m == 0 || n == 1) //没有苹果或只有一个盘子时,都是一种放法
return 1;
if (m < n)
return fun(m, m); //盘子过多,则始终有n-m个盘子为空,抽取也不影响结果
else //m >= n
return fun(m, n - 1) + fun(m - n,n); //含有0的方案数 + 不含有0的方案数
}
int main() {
int dp[MAX];
int m, n;
cin >> m >> n; //m个苹果、n个盘子
cout << fun(m, n);
}

京公网安备 11010502036488号