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