http://poj.org/problem?id=1664
题目是中文的,一个递归的题目
把每一次的苹果分为两类
Ⅰ:所以盘子都放一个,然后其他的在随便放;
Ⅱ:有一个盘子没有放苹果;
这样下去的话,有一个就会考虑均分的问题,而另一个则是考虑递增的问题
具体自己动手模拟就懂了
1 #include <iostream> 2 3 using namespace std; 4 5 int f(int m,int n) 6 { if(m<0) //苹果不能为负,返回0 7 return 0; 8 if(m==0||n==1) //没有苹果,则说明所以的盘子都是0个,一种放法 9 return 1; 10 return f(m-n,n)+f(m,n-1); //第一个就是所以盘子放一个,然后其他的在随便放,第二个则是减少一个盘子 11 } 12 13 int main() 14 { 15 int t,m,n; 16 cin>>t; 17 while(t) 18 { 19 t--; 20 cin>>m>>n; 21 cout<<f(m,n)<<endl; 22 } 23 return 0; 24 }