D: Divide the pears
提交: 20 解决: 18
题目描述
Macro非常喜欢吃梨,有一天他得到了ACMICPC组委会送给他的一筐梨子。他比较心疼学生,就打算把梨子分给学生吃。现在他要把M个梨子放到N个盘子里面 (我们允许有的盘子为空) ,你能告诉Macro有多少种分法吗?
(请注意,如果有三个盘子,我们将5,1,1和1,1,5,视为同一种分法)
输入
第一行是一个整数t,代表有t组样例。
第二行有两个整数M 和 N 代表有M个梨和N个盘子。
输出
输出有多少种方法
样例输入
1
7 3
样例输出
8
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int dp(int m,int n) 5 { 6 if(n==1) 7 return 1; 8 if(m==0) 9 return 1; 10 if(m<n) 11 return dp(m,m); 12 return dp(m-n,n)+dp(m,n-1); 13 } 14 15 int main() 16 { 17 int t; 18 scanf("%d",&t); 19 while(t--) 20 { 21 int m,n; 22 scanf("%d%d",&m,&n); 23 int ans=dp(m,n); 24 printf("%d\n",ans); 25 } 26 return 0; 27 }