poj 1664 放苹果
#include<iostream> //构造非下降序列(这样才能不重复),统计其个数
using namespace std;
int t,m,n,ans[15],sum,s;
void dfs(int r)
{
if(r==n)
{
if(m-sum>=ans[r-1])
s++;
return ;
}
for(int i=ans[r-1];sum+i<=m;++i)
{
ans[r]=i;
sum+=ans[r];
dfs(r+1);
sum-=ans[r];
}
}
int main()
{
int t;
cin>>t;
while(cin>>m>>n)
{
s=sum=0;
dfs(1);
cout<<s<<endl;
}
return 0;
}