#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); }