题目描述
把 M M M 个同样的苹果放在 N N N 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法(5,1,1和1,1,5是同一种方法)。
输入格式
第一行是测试数据的数目 t t t( 0 0 0 ≤ \leq ≤ t t t ≤ \leq ≤ 20 20 20 ),以下每行均包括二个整数 M M M 和 N N N( 1 1 1 ≤ \leq ≤ M M M , N N N ≤ \leq ≤ 10 10 10 ),以1个空格分开。
输出格式
对输入的每组数据 M M M 和 N N N ,用一行输出相应的 K K K 。
样例输入
1
7 3
样例输出
8
样例输入
3
3 2
4 3
2 7
样例输出
2
4
2
#include <bits/stdc++.h>
using namespace std;
int n,m,sum=0,ans=0,sm;
int visit[101],a[101],u[101];
void dfs(int cur)
{
int i;
if(cur==n+1)
{
sm=0;
for(int i=1;i<=n;i++)
{
sm+=a[i];
}
if(sm==m)
{
ans++;
}
return ;
}
for(i=a[cur-1];i<=m;i++)
{
a[cur]=i;
dfs(cur+1);
}
}
int main()
{
int t;
cin>>t;
while(t--)
{
ans=0;
cin>>m>>n;
dfs(1);
cout<<ans<<endl;
}
return 0;
}