#include <iostream>
using namespace std;
/*分为n>m和n<m两种情况。当n>m时,一定有盘子为空,此时f(m,n)=f(m,m)
当n<=m时,分为有盘子为空时(至少有一个盘子为空):f(m,n-1),没有盘子为空(每个盘子至少放了一个苹果):f(m-n,n)
"*/
int f(int m,int n)
{
if(n>m)
return f(m,m);
if(m==0) //如果没有苹果,那么只有一种情况就是所有的盘子都为空
return 1;
if(n==0) //如果没有盘子,则不存在这样的方法来放苹果
return 0;
return f(m,n-1)+f(m-n,n);
}
int main()
{
int m,n,t; //t为输入几组m,n
using namespace std;
/*分为n>m和n<m两种情况。当n>m时,一定有盘子为空,此时f(m,n)=f(m,m)
当n<=m时,分为有盘子为空时(至少有一个盘子为空):f(m,n-1),没有盘子为空(每个盘子至少放了一个苹果):f(m-n,n)
"*/
int f(int m,int n)
{
if(n>m)
return f(m,m);
if(m==0) //如果没有苹果,那么只有一种情况就是所有的盘子都为空
return 1;
if(n==0) //如果没有盘子,则不存在这样的方法来放苹果
return 0;
return f(m,n-1)+f(m-n,n);
}
int main()
{
int m,n,t; //t为输入几组m,n