【题解】分糖果
【题目描述】
小A在生日这天收到了哥哥送来的一盒糖果,这盒糖果共有M个,小A要把这盒糖果放到N个盘子中(允许有盘子不放),请问,有多少种不同的放法?
请注意:数值相同,顺序不同,我们视为是相同的放法,比如,1 1 6,和1 6 1、6 1 1,我们视为是同一种放法。
【输入描述】
输入包含多组测试样例。每组输入的第一行是一个整数t,表示数据有多少组。(t<=10)
接下来t行,每行输入两个整数M和N,代表有糖果的数量和盘子的数量。
(M和N均≥0,且≤20)
【输出描述】
对于每对输入的M和N,输出有多少种放法。
【样例输入】
1 7 3
【样例输出】
8
【参考答案】
#include<stdio.h>
int dp(int m,int n)
{
if(!m||m==1||!n||n==1)
return 1;
if(m<n)
return dp(m,m);
return dp(m,n-1)+dp(m-n,n);
}
int main()
{
int t,m,n;
while(scanf("%d",&t)!=EOF)
{
while(t--)
{
scanf("%d%d",&m,&n);
printf("%d\n",dp(m,n));
}
}
return 0;
}扫描二维码推送至手机访问。
版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。
