#include#include int f(int, int); int main() { int t, m, n, sum; scanf("%d", &t); while (t--) { scanf("%d%d", &m, &n); sum = f(m, n); printf("%dn", sum); } system("pause"); return 0; } /* m为剩余苹果数,n为剩余盘子数 */ int f(int m, int n) { /* 有些盘子不放苹果,已包含在f(m, n - 1)中,返回0*/ if (m < 0) return 0; /* 刚好每个盘子放1个,只有一种情况 */ if (m == 0) return 1; /* 只有1个盘子可以放,也只有全部放入这一种情况 */ if (n == 1) return 1; /* n个盘子内至少都放1个 + 只放入n-1个盘子中 */ return f(m - n, n) + f(m, n - 1); }
相关文章: