题目背景
(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<<" "; }return 0; }