青少年编程知识记录 codecoming

【题解】分糖果

【题目描述】

小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;  }



(adsbygoogle = window.adsbygoogle || []).push({});

标签: 动态规划

作者:亿万年的星光 分类:题解目录 浏览: