poj 1664 放苹果 递归
题目链接: http://poj.org/problem?id=1664 题目描述: 有n个苹果,m个盒子,盒子和苹果都没有顺序,盒子可以为空,问:有多少种放置方式? 解题思路: 当前有n个苹果,m个盒子。 (1):假设当前最少的盒子放置一个苹果,则给m个盒子分别放一个苹果,剩下n-m个苹果。 (2):假设当前最少的盒子不放苹果,则剩m-1个box,n个苹果。 代码: 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <iostream> 5 using namespace std; 6 7 int f (int n, int m); 8 9 int main () 10 { 11 int t, n, m; 12 scanf ("%d", &t); 13 while (t --) 14 { 15 scanf ("%d %d", &n, &m); 16 printf ("%d\n", f(n, m)); 17 } 18 return 0; 19 } 20 21 int f (int n, int m) 22 { 23 if (n < 0)//没有苹果了,违法 24 return 0; 25 if (n == 0 || m == 1)//一个盒子,无论有几个苹果