【题解】分糖果
【题目描述】
小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; }
扫描二维码推送至手机访问。
版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。