```cpp
#include<iostream>
#include<cstdio>
using namespace std;
int t,n,m,ans,cnt;
void dfs(int used,int num,int rest)
//used:这次一共用的盘子数,num:将要放苹果的盘子,rest:手中还剩多少苹果
{
if(rest==0&&num!=used)return;
if(rest==0&&num==used)
{
ans++;
return;
}
if(num>used)return;
for(int i=1;i<=rest;i++)
{
dfs(used,num+1,rest-i);
}
return;
}
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&m,&n);
for(int i=1;i<=n;i++)
{
dfs(i,1,m);
}
printf("%d\n",ans);
}
}
```
by CHUAN02162 @ 2018-12-24 21:12:52
#include <bits/stdc++.h>
using namespace std;
int put(int m,int n)
{
if(m<=0)
return 1;
if(n==1)
return 1;
if(n==0)
return 0;
if(m<n)
return put(m,m);
else
return put(m,n-1)+put(m-n,n);
}
int main()
{
int m,n,t;
cin>>t;
for(int i=1;i<=t;i++)
{
cin>>m>>n;
cout<<put(m,n)<<endl;
}
return 0;
}
by 孙玉瑶 @ 2019-05-28 12:28:48