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